Devise gem用于身份验证。我需要有一个用户索引和显示视图。发现这个如何在设计wiki,但无论如何玩,无法使其工作。
Devise - How To: Manage users through a CRUD interface
方法1:记得从Devise模型中移除:registerable模块(在我的例子中是用户模型)确保将map.resources:users放在map.devise_for:users route(devise_for:users and资源:Rails的用户3)。
方法2:devise_for:users,:path_prefix => 'd'资源:用户将设计逻辑与您的crud用户控件隔离开来
我的问题: 1.如果你在模型中删除可注册的,那么如何为用户设计工作? 2.如果你这样做了,你能提供样品吗?
提前致谢
答案 0 :(得分:5)
以下对我有用。
<强> users_controller.rb 强>
class UsersController < ApplicationController
...
def create
@user = User.new(params[:user])
if params[:user][:password].blank?
params[:user].delete(:password)
params[:user].delete(:password_confirmation)
end
respond_to do |format|
if @user.save
format.html { redirect_to users_path, notice: 'User was successfully created.' }
else
format.html { render action: "new" }
end
end
end
...
end
<强>的routes.rb 强>
...
devise_for :users, :path_prefix => 'd'
resources :users
...
我希望这可以帮到你。
此致 贾科莫
答案 1 :(得分:3)
通过在用户视图文件夹中放置相应的new.html.erb,edit.html.erb,_form.html.erb等文件,添加/编辑/删除用户的工作方式与其他任何CRUD不同,如Devise的用户是另一种模特。我不会发布新的或编辑erbs(简单,脚手架可以显示其余部分),但我的用户_form.html.erb的一个示例......
<%= form_for(@user) do |f| %>
<%= render :partial => 'shared/errors', :locals => { :content => @user } %>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</div>
<div class="field">
<%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
在我看来,我认为我离开了:可以注册,我仍然可以通过CRUD管理和更新用户。如果你把它放在外面,那么用户就无法自己注册,但你仍然可以自己添加和编辑用户(当然会用load_and_authorize_resource保护用户控制器以保持常规用户的使用。)