I've seen a couple questions on this but haven't been able to solve it...
I'm trying to pass a parameter while rendering a partial (similar to domainname.com/memory_books/new?fbookupload=yes)
Right now, I use this line:
<%= render :partial => '/memory_books/new', :fbookupload => "yes" %>
and in the partial, I have tried to get the content of fbookupload by using:
<%= fbookupload %>
which gives an "undefined local variable" error and
<%= params.inspect %>
which does not show fbookupload as a parameter.
How can I have the partial pass along the parameter :fbookupload?
Thank you.
UPDATE:
Could it have anything to do with the fact that I'm rendering this within a render?
i.e. the page (/fbookphotos/show) that has
<%= render :partial => '/memory_books/new', :fbookupload => "yes" %>
is being rendered by another page with (posts/show) via:
<%= render :partial => '/fbookphotos/show' %>
so I'm rendering this within a render.
To do it your way:
In the main view:
And in the partial:
2nd option:
Ideally in the controller, otherwise in the view, define an instance variable:
@fbookupload = "yes"
. Then it is available everywhere. The partial will then be :<%= @fbookupload %>
Taking it out of the comments for posterity. This syntax is correct:
But if there is a reference to rendering the same partial without specifying the local variables, e.g.
then
fbookupload
variable becomes unavailable. The same applies to multiple local variables, e.g.will work if only occurs once. But if there is something like that somewhere else in the code
then the
var2
will become unavailable. Go figure ...try this:
Params is just request parameter, so if u want to pass it in params u have to add it to your url
?fbookupload=yes
or assign itparams[:fbookupload] = "yes"
, but i don't think that is a good idea.But if u need to use
params[:fbookupload]', u can replace it with
params[:fbookupload] || fbookupload', and pass fbookupload in locals hash for partial.