2014-02-24 80 views
0

我使用devise_invitable只允许用户注册,如果他们被邀请。设计删除新注册,同时保持编辑注册

要删除用户注册,同时保持编辑或删除帐户的选项:

在我的用户模型中,我删除了:登记的

# app/models/user.rb 
class User 
... 
    devise :database_authenticatable, :recoverable, :rememberable 
... 
end 

在我的路线文件:

# config/routes.rb 
    devise_for :users 
    as :user do 
    get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration' 
    put 'users' => 'devise/registrations#update', :as => 'user_registration' 
    end 

试图编辑帐户时,出现此错误:

No route matches [PUT] "https://stackoverflow.com/users/edit.user" 

当试图删除的帐户我得到这个错误:

No route matches [DELETE] "https://stackoverflow.com/users/edit.user" 

如何删除路由和链接注册,同时保持编辑注册的能力吗?

仅从模型中删除注册是不够的。

在你的路由
+0

为什么不让自己的自定义用户编辑/更新,那么你不需要注册。 –

+0

我该怎么做? –

回答

1

添加

resources :users, only: [:edit,:update] 

这会给你2路

edit_user GET  /users/:id/edit(.:format)  users#edit 
    user   PUT  /users/:id(.:format)   users#update 

现在在UsersController中添加以下内容,如果u使用rails4然后u需要允许PARAMS也

def edit 
     @user = current_user 
end 
def update 
    @user = current_user 
    if @user.update_attributes(user_params) 
     redirect_to @user 
    else 
     render :edit 
    end 
end 

def user_params 
    params.require(:user).permit(:username,:name,:email) # add all params which u need to save and that must present in user params passed from forms 
end 

使表格在app/views/users/

中添加edit.html.erb
<%= form_for(@user) do |f| %> 
    <%= f.label :username %> 
    <%= f.text_field :username %> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
    # add all other fields 

    <%= f.submit "Update" %> 
<% end %> 
+0

@凯蒂海德曼,让我知道如果我错了某处... –