我正在研究如何在我的用户文件夹中使用index.html.erb中的simple_form gem。我没有成功。奇怪的是,它正在_form.html.erb工作。为什么?
users_controller.rb
def index
@users = User.find_by_sql(["SELECT id, name, login, password
FROM users"])
end
users/index.html.erb
<%= simple_form_for @users do |f| %>
<p>
<%= f.input :name %>
</p>
.
.
.
<p>
<%= f.button :submit %>
</p>
<% end %
它引发了这个异常:NilClass的未定义方法`model_name':Class
有什么想法吗?
答案 0 :(得分:3)
您正在尝试为一组用户创建表单,但simple_form_for
只记录一条记录,而不是数组。如果您想要的是一个表单列表,每个用户一个表单,那么这样做:
用户/ index.html.erb
<% @users.each do |user| %>
<%= simple_form_for user do |f| %>
<p>
<%= f.input :name %>
</p>
<p>
<%= f.button :submit %>
</p>
<% end %>
<% end %>
但这似乎是一件奇怪的事情,这个表格不应该在你的new
页面上,而不是索引页面吗?
或者,如果您希望在索引页面上为用户提供用户列表,则需要在index
操作中创建该用户:
def index
@users = User.find_by_sql(["SELECT id, name, login, password
FROM users"])
@user = User.new
end
然后,您可以在视图中使用simple_form_for @user do |f| ...
创建表单,还可以使用@users
访问用户列表。