我在下面的表单上收到以下错误: Admin :: Users#index中的NoMethodError 用于ActiveRecord的未定义方法`model_name':: Relation :: ActiveRecord_Relation_User:Class
此表单位于索引页面上。我收到此错误的任何想法?
形式:
<% @user.each do |user| %>
<div class="modal-footer">
<%= form_for(@user, :url => admin_user_inactive_path(user.id), html: { "role" => "form" } ) do |f| %> # Error is occurring here...
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Inactivate User</button>
<% end %>
</div>
<% end %>
用户控制器:
def index
@user = User.where(del_flag: false).order('last_name DESC')
end
...
def inactive
@user = User.find(params[:user_id])
if @user.update_attribute(:inactive, true)
flash[:success] = "The account (" + @user.first_name + " " + @user.last_name + ") has been inactivated."
redirect_to action: :index
else
render 'edit'
end
end
答案 0 :(得分:1)
@user必须是用户的特定实例,而不是很多用户
@user = User.where(del_flag: false).order('last_name DESC')
是很多用户。您可以附加.first
,但我不知道这是否是您想要做的
答案 1 :(得分:0)
我有两个问题首先你正在使用form_for(@user)
这是一个数组而不是对象。第二个admin_user_inactive_path(user.id)
应使用@user.first.id
,因为user
不是必需的。所以使用form_for(@ user.first)
答案 2 :(得分:0)
您应该将表单设置为使用包含单个user
对象的本地变量User
,而不是包含@user
的实例ActiveRecord::Relation
:
<%= form_for(user, :url => admin_user_inactive_path(user.id), html: { "role" => "form" } ) do |f| %>
等
我还建议您将@user
实例变量重命名为@users
,因为单数形式表明变量包含单个ActiveRecord
对象。