in the controller,I have the function
def check_place
place = Place.find(:first, :conditions => [%{location = ?
},params[:place2].downcase])
if place.nil?
render :partial => ‘get_more_info’
end
end
the _get_more_info.rhtml is something like this
<%= javascript_include_tag :defaults %>
<%= error_messages_for ‘article’ %>
Please enter some details
so I expect this partial to be displayed when place.nil? is true.
however, even if the program can get into this view, the view does not
display at all.
anybody having some ideas? I suspect the view is not written
properly,something is missing.
sure,so I need to know whether the place I entered exists in my database
or not. if it is in the database then I print out Query OK. If it does
not exist,I want to invoke a form asking for more information.
so in _edit.rhtml,I press Check Place button to trigger the check_place
function in the controller. and in the controller I try to figure out if
that place exists. and if it doesnt(place.nil?=true),I need to
render_partial “get_more_info”.
So it all worked fine until it gets to the get_more_info partial.
whatever I write in that partial file _get_more_info.rhtml, it doesnt
get displayed at all. however, as I can see, the controller is able to
find _get_more_info.rhtml.
I suspect something might be wrong in _get_more_info.rhtml but not sure
where exactly the problem is.
Yes,I know development.log, thanks for reminding me. the thing is
whether to render this partial get_more_info is controlled by the
controller. so how would I do that in the edit.rhtml view?
SNIP...
so I expect this partial to be displayed when place.nil? is true.
however, even if the program can get into this view, the view does not
display at all.
anybody having some ideas? I suspect the view is not written
properly,something is missing.
Thanks a lot!
Hi Jacquie,
Do you know about “development.log”? This is a log file that often has
some useful info in it when things are going poorly. You will find it
in the “logs” folder in your Rails project root.
Just taking a stab at this from what you’ve said, I’m a little unsure
about how you’re trying to do the render :partial from the controller.
There’s more than one way to skin a Republican, but what I would be
doing in this instance is to have something like:
<%= render :partial => 'get_more_info' %>
at an appropriate spot in my “edit” view. Then in my conditional stuff
in the controller I would use something like:
render :update do |page|
page.visual_effect :BlindDown, “error_stuff”, :duration => 1.0,
:queue => “end”
end
to make the error stuff slide into view with ajax.
Another thing to consider that would be simpler would be to use the
“Flash” helper in Rails as described on page 88 of the Agile Rails book:
<% if @flash[:notice] -%>
<%= @flash[:notice] %>
<% end -%>
Then your controller just has to:
flash[:notice] = ‘Please Enter Some Details’
You’re doing <%= error_messages_for ‘article’ %> in your partial, but in
check_place you’re not defining @article (unless there is some other
code you haven’t shown).
A more general tip. Download Firebug now. I mean it. It’s a firefox
extension that I consider absolutely vital when working with ajax, you
can see all the ajax requests you have made (and their response), it
flags javascript errors, has a dom inspector etc…
Yes,I know development.log, thanks for reminding me. the thing is
whether to render this partial get_more_info is controlled by the
controller. so how would I do that in the edit.rhtml view?
Jeff P. wrote:
Oh! I think I understand how you are going at this thing. Have a look
at “replace_html” instead of “render :partial”.
The problem is you are trying to render a partial from your controller,
and AFAIK that can’t be done. There is nothing to tell it where in the
page to render it.
From your original post, it looks like you’re doing this in ajax land,
so in your controller you can do a render :update with replace_html.
You need to put an empty “div” in your edit view where you want it to
show up and give the div an “id”. Then replace that div with your
partial using “replace_html” and render :update.
Make sense?
hth,
jp
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.