更新数据库模型视图控制器rails 4方法

时间:2014-03-01 04:25:58

标签: ruby-on-rails ruby rails-activerecord crud

我想调用一个在保存时更新属性的方法。

这是我的index.html.erb

 <% @users.each do |user| %>
<div>
    <strong><%= user.email %></strong> 
</div>
 <% if can? :update, User %>
 <%= link_to 'Make Author', User, method: :add_roles %>
 <% end %>
 

以下是我的user_controller.rb

  def add_roles
respond_to do |format|
  if @user.update(user_params)
    user.author = true
    user.save!
    format.html { redirect_to @user, notice: 'User was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: 'edit' }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end

但它不会更新属性。我认为这是因为我没有正确地将它附加到正确的用户。我想current_user更新另一个用户。

1 个答案:

答案 0 :(得分:0)

我认为解决方案很简单,首先要做avlazarov在评论中所说的:

  

在视图中&lt;%= link_to&#39;制作作者&#39;,&#34; / users /#{user.id} / add_roles&#34;,   方法:: patch%&gt;在routes.rb补丁&#39; / users /:id / add_roles&#39; =&GT;   &#39;用户#add_roles&#39;

或者更简单的东西,在routes.rb中:

resources :users do
  patch :add_roles, on: :member
end

然后在视图中:

<%= link_to 'Make author', add_roles_users_path(user) %>

然后将app / controllers中的user_controller.rb重命名为users_controller.rb,并确保类名为UsersController。