我是新来的铁轨,所以我试图做到这一点,添加一个角色,使窗体更新,如果用户更新succsessfully加入角色。 注:我使用的设计,并与cancancan没有路由匹配{:action =>“partner_update”,:controller =>“users”}
路线
get 'users/becomepartner' => 'users#becomepartner' do
collection do
patch 'update_partner'
end
end
rolify,这是我的用户控制器
def becomepartner
@user = current_user
end
def update_partner
@user = User.find(current_user.id)
if @user.update_with_password(partner_params)
self.add_role(:partner)
# Sign in the user by passing validation in case their password changed
bypass_sign_in(@user)
redirect_to root_path, notice: 'now you can create'
else
render :becomepartner
end
end
private
def partner_params
# NOTE: Using `strong_parameters` gem
params.require(:user).permit(:name, :style, :current_password, :email)
end
,这是我的看法becomepartner.html
<div>
<%= form_for(@user, :url => { :action => "update_partner" }) do |f| %>
<div class="field">
<%= f.label :style %>
<%= f.text_field :style %>
</div>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %>
<%= f.email_field :email %>
</div>
<div class="field">
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i>
<%= f.password_field :current_password, autocomplete: "off" %>
</div>
<% end %>
</div>
我认为这是'update_partner',而不是'partner_update',显示你的'耙routes' – Sravan