Rails 3,正确的做部分方法?

时间:2011-11-03 23:49:26

标签: ruby-on-rails ruby-on-rails-3

让以下代码抛出错误。我以前总是只是陪审团操纵但想要学习正确的方法。传递局部变量的正确方法是什么?假设您还有一个要在部分中使用的实例变量?

@users is an array of user emails
<% @users.each do |email| %>
   <%= render :partial => 'user/foobar' %>
<% end %>

user/foobar
<div id="user_<%= email %>>
   <div><%= email %></div>
</div>

编辑:在添加电子邮件地址后,也希望在js文件中使用partial。我会在创建后将实例设置为@user或其他吗?

2 个答案:

答案 0 :(得分:2)

您无需使用each。您可以使用:collection选项:

<%= render :partial => "user/foobar", :collection => @users %>

user/_foobar.html.erb部分(下面,自动创建的局部变量foobar将包含@users集合中项目的当前实例):

<div id="user_<%= foobar %>>
   <div><%= user %></div>
</div>

局部变量以partial的名称命名。请参阅guide here

答案 1 :(得分:0)

试试这个:

render :partial => 'user/foobar', :locals => {:email => email }

将您的本地变量“email”传递为符号:email