在渲染中传递参数 – 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。