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}%>");