通过单一属性更新的设计密码要求

时间:2014-10-20 22:22:18

标签: ruby-on-rails-4 devise

目前我的应用程序正在使用设计,我的用户在更新其个人资料时需要输入密码。

我正在为用户的表格实施一个额外的字段,该字段会记住他们的侧边栏导航偏好(展开或折叠)。为了测试,我设置了一个名为" menu_collapsed"的布尔字段。设置为" false"默认情况下。

我正在尝试将此值更新为" true"当用户决定压缩侧边栏菜单时远程。

索引

<li><%= link_to('Toggle', toggle_menu_preference_user_path(@user), :method => :put) %></li>

路线

resources :users do
    member { put :toggle_menu_preference }
end

用户控制器

def toggle_menu_preference
  @user = current_user
  @user.menu_collapsed = !@user.menu_collapsed
  @user.save
end

应用程序控制器

def configure_permitted_parameters
   devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :account_id, :account_name, :password, :password_confirmation) }
   devise_parameter_sanitizer.for(:account_update).concat([:name])
end

当我点击链接时,它会处理请求,但是我想让用户想要包含他们的密码。

是否可以通过仅为此用户属性传递密码要求?

1 个答案:

答案 0 :(得分:0)

这似乎就像一个魅力!

在本地主机和Heroku上测试

应用程序控制器(已添加:menu_collapsed)到清理程序

def configure_permitted_parameters
 devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :account_id, :account_name, :password, :password_confirmation) }
 devise_parameter_sanitizer.for(:account_update).concat([:name, :menu_collapsed])
end

<强>路线

resources :users do
  member { put :toggle_menu_preference }
end

用户控制器

def menu_preference  
    @user = current_user 
    @user.menu_collapsed = !@user.menu_collapsed
    @user.save
  if @user.menu_collapsed
    render :nothing => true 
   else
     render :nothing => true 
  end  
 end

查看

 <%= link_to menu_preference_user_path(current_user), id: "layout-condensed-toggle", remote: true do %>
     <div class="iconset top-menu-toggle-dark"></div>
 <% end %>