我的rails应用程序正在添加一个点/句点“。”尝试浏览设计宝石用户的个人资料时进入路线。
routes.rb中:
devise_for :users, :controllers => { :registrations => "registrations" }
(基本上使用路由来允许一些自定义函数 - 它应该仍然使用默认的设计路由路径。
Rake路线输出:
user_registration POST /users(.:format) registrations#create
new_user_registration GET /users/sign_up(.:format) registrations#new
edit_user_registration GET /users/edit(.:format) registrations#edit
视野中的链接:
<%= link_to 'Edit', edit_user_registration_path(user) %>
用户在.each
循环中定义。
URL中的输出链接如下所示:
http://localhost:3000/users/edit.2
我的目标是有一个链接来编辑任何用户的个人资料(当然,这些项目之外的权限受到控制)。
我“认为”我的问题是routes.rb而没有在那里正确指定路径。我认为它应该是包含rake routes
参数的:id
。
感谢您的帮助!
答案 0 :(得分:2)
正常路线的设计,registrations#edit
用于编辑当前登录用户,如果你想为用户提供CRUD界面(我想你想编辑用户),你可以添加另一个控制器(例如users_controller.rb
)并进行一些操作,例如控制器:
def edit
@user = User.find(params[:id])
end
def update
if params[:user][:password].blank?
params[:user].delete(:password)
params[:user].delete(:password_confirmation)
end
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to some_path, notice: 'Updated.' }
format.json { head :no_content }
else
format.html {
flash[:alert] = "Something wrong"
render :action => :edituser
}
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
在routes.rb
上,你可以像这样关注
scope '/user' do
match '/edit/:id' => 'users#edit', :as => :edit_user
put '/update/:id' => 'users#update', :as => :update_user
end
每个部分的链接如下:
<%= link_to 'Edit', edit_user_path(user) %>
参考:
答案 1 :(得分:1)
我认为Devise的edit_user_registration_path
在内部使用current_user
,因此您不应该在(user)
link_to