2015-08-15 3 views
0

Я пытаюсь обновить статус пользователя из длинного списка пользователей, нажав кнопку «сделать пользователя», которая обновит «статус» пользователя от «admin» до «user» ». Тем не менее, код, который я использую, только обновляет первого пользователя от «admin» до «user», независимо от того, какую кнопку я нажимаю.Как обновить записи из списка рельсов списка

Я считаю, что ошибка находится в контроллере в первой строке обновления.

Как я могу сделать функцию обновления, выбрать запись, которую я нажал «сделать пользователя», и обновить ее, а не первую запись? Благодаря!

Контроллер

def index 
@user = User.find(params[:id]) 
end 
def update 
    @user = User.find_by(params[:id]) 
    @user.update_attributes(update_user_params) 
    redirect_to '/dashboard/users' 
end 

проблема должна быть в (Params [: ID]). Код формы

<% @user.each do |user| %> 
       <tr id="dashfield"> 
       <td><%= user.first_name%></td> 
       <td><%= user.last_name %></td> 
       <td><%= user.email %></td> 
       <td><%= user.role %></td> 
       <td><%= form_for user, method: :put do |f|%> 
         <%= f.hidden_field :role, :value => 'user'%> 
         <%= f.submit 'Make User'%> 
        <%end%><%= form_for user, method: :put do |f|%> 
         <%= f.hidden_field :role, :value => 'admin'%> 
         <%= f.submit 'Make Admin'%> 
        <%end%></td> 
       </tr> 
      <% end %> 

ответ

0

Вы должны проверить, что @hour это существует или нет, то вы можете обновить

def update 
    @user = User.find_by(params[:id]) if params[:id].present? 
    if @hour.present? 
    @user.update_attributes(update_user_params) 
    redirect_to '/dashboard/users' 
    end 
end 

Вы должны проверить все возможные неудачи первого.

Edit: вы можете установить идентификатор пользователя, как: <%= f.hidden_field :id, :value => user.id %>

+0

Как я мог бы сделать функцию формы только для записи он находится на? потому что он по-прежнему редактирует только первую запись в базе данных –

+0

Просьба поделиться своим кодом формы. –

+0

извините, я отправил неправильный контроллер, но это то же самое, с разными метками –

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