Rails 4 – 将variables传递给partial

我正在关注Ruby on Rails教程,并尝试将variables传递给partials时遇到了问题。

我的_user部分如下

 <li> <%= gravatar_for user, size: 52 %> <%= link_to user.name, user %> </li> 

我想通过一个数字的大小值。 我正在尝试如下,没有任何运气。

 <%= render @users, :locals => {:size => 30} %> 

提前致谢!

如果您传递本地语言,则需要完整的渲染部分语法

 <%= render @users, :locals => {:size => 30} %> 

 <%= render :partial => 'users', :collection => @users, :locals => {:size => 30} %> 

或者使用新的散列语法

 <%= render partial: 'users', collection: @users, locals: {size: 30} %> 

我认为这更可读

从PartialRender上的Rails api:

呈现默认情况

如果您不打算使用集合或布局等任何选项,则还可以使用渲染的简短默认设置来渲染部分。

例子:

 # Instead of <%= render partial: "account" %> <%= render "account" %> # Instead of <%= render partial: "account", locals: { account: @buyer } %> <%= render "account", account: @buyer %> # @account.to_partial_path returns 'accounts/account', so it can be used to replace: # <%= render partial: "accounts/account", locals: { account: @account} %> <%= render @account %> # @posts is an array of Post instances, so every post record returns 'posts/post' on `to_partial_path`, # that's why we can replace: # <%= render partial: "posts/post", collection: @posts %> <%= render @posts %> 

所以,你可以使用传递一个局部variablessize来渲染,如下所示:

 <%= render @users, size: 50 %> 

然后在_user.html.erb使用它:

 <li> <%= gravatar_for user, size: size %> <%= link_to user.name, user %> </li> 

请注意, size: size相当于:size => size

如果您使用JavaScript来渲染,然后使用escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");