2014-01-13 3 views
1

Я получаю следующее сообщение об ошибке на следующей форме: NoMethodError в Администратор :: Пользователи # указательным не определен метод `model_name» для ActiveRecord :: Relation :: 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, а не один экземпляр пользователя. \ – MrYoshiji

+0

Я думаю, что у вас есть ошибка admin_user_inactive_path (user.id) должен быть admin_user_inactive_path (@ user.id) также добавить User.where (...). Order (..). First – 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 (пользователь ...' '' без @ –

0

У меня есть две проблемы, прежде чем вы используете form_for(@user). Это массив, а не объект. второй admin_user_inactive_path(user.id) должен использовать @user.first.id, поскольку user не требуется. поэтому используйте form_for (@ user.first)

Смежные вопросы