在渲染中传递参数 – Rails 3
我已经看到了几个问题,但一直没能解决它……
我试图在渲染部分时传递参数(类似于domainname.com/memory_books/new?fbookupload=yes)
现在,我使用这一行:
'/memory_books/new', :fbookupload => "yes" %>
在部分,我试图通过使用以下方式获取fbookupload的内容:
它给出了“未定义的局部变量”错误
它没有显示fbookupload作为参数。
如何在参数中进行部分传递:fbookupload?
谢谢。
更新:
它是否与我在渲染中渲染它的事实有关?
即具有的页面(/ fbookphotos / show)
'/memory_books/new', :fbookupload => "yes" %>
正在由另一个页面呈现(posts / show)via:
'/fbookphotos/show' %>
所以我在渲染中渲染它。
试试这个:
<%= render :partial => '/memory_books/new', :locals => {:fbookupload => "yes"} %>
把它从后代的评论中拿出来。 这个语法是正确的:
render '/memory_books/new', fbookupload: "yes"
但是如果存在引用相同的局部而不指定局部变量的引用,例如
render '/memory_books/new'
然后fbookupload
变量变得不可用。 这同样适用于多个局部变量,例如
render 'my_partial', var1: 'qq', var2: 'qqq'
如果只发生一次将会工作。 但是如果在代码中的其他地方有类似的东西
render 'my_partial', var1: 'qq'
然后var2
将变得不可用。 去搞清楚 …
按照你的方式做到:
在主视图中:
<% fbookupload = "yes" %> <%= render :partial => '/memory_books/new', :locals => {:fbookupload => fbookupload} %>
在部分:
<%= fbookupload %>
第二种选择:
理想情况下,在控制器中,否则在视图中,定义一个实例变量: @fbookupload = "yes"
。 然后随处可用。 部分将是: <%= @fbookupload %>
Params只是请求参数,所以如果你想在params中传递它你必须将它添加到你的url ?fbookupload=yes
或者指定params[:fbookupload] = "yes"
,但我认为这不是一个好的理念。
但如果你需要使用params[:fbookupload]', u can replace it with
params params[:fbookupload]', u can replace it with
[:[fbookupload] || fbookupload’,并在本地哈希中传递fbookupload为partial。
- 使用Prawn创建包含属于collectionproxy的值数组的PDF
- capistrano – NameError:未初始化的常量Net :: SSH :: KnownHosts :: SUPPORTED_TYPE