2014-01-13 45 views
1

我得到下面的表格上看到以下错误: NoMethodError在管理::用户#指数 未定义的方法`MODEL_NAME” ActiveRecord的::关系:: ActiveRecord_Relation_User:类未定义的方法 - “型号名称”

此表格位于索引页上。任何想法我得到这个错误?

形式:

<% @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

您的@user变量是ActiveRecord :: Relation,而不是User的单个实例。 \ – MrYoshiji

+0

我认为你有一个错误admin_user_inactive_path(user.id)应该是admin_user_inactive_path(@ user.id)还要添加User.where(...)。order(..)。第一个 – sirfilip

+0

我修改了上面的代码以包含'<%@ user.each do | user | %>' – evanvee

回答

0

你应该设置你的形式使用本地变量user,包含单User对象,而不是如@user包含ActiveRecord::Relation

<%= form_for(user, :url => admin_user_inactive_path(user.id), html: { "role" => "form" }) do |f| %> 

我还建议您将@user实例变量重命名为@users,因为单数形式表明该变量包含单个对象的ActiveRecord对象。

1

@user必须是用户的特定实例,而不是许多用户

@user = User.where(del_flag: false).order('last_name DESC')许多用户。你可以附加一个.first但我不知道这是你想要做什么

+0

有'<%@ user.each do | user | %>'在代码的开头。我应该把它包括在原文中。 – evanvee

+0

比使用'''<%= form_for(user ...'''没有@ –

0

我有两个问题,首先你正在使用form_for(@user)这是一个数组而不是对象。第二个admin_user_inactive_path(user.id)应该使用@user.first.id,因为user不是必需的。所以使用的form_for(@ user.first)

相关问题