尝试访问<%= link_to('编辑注册',edit_user_registration_path)%>时出现以下错误。
Routing Error
No route matches {:action=>"edit", :controller=>"profiles"}
Try running rake routes for more information on available routes.
的routes.rb
xyz::Application.routes.draw do
root :to => "home#index"
resources :profiles
devise_for :users
authenticated :user do
root :to => "home#index"
end
end
我的路线如下:
root / home#index
profiles GET /profiles(.:format) profiles#index
POST /profiles(.:format) profiles#create
new_profile GET /profiles/new(.:format) profiles#new
edit_profile GET /profiles/:id/edit(.:format) profiles#edit
profile GET /profiles/:id(.:format) profiles#show
PUT /profiles/:id(.:format) profiles#update
DELETE /profiles/:id(.:format) profiles#destroy
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
user_registration POST /users(.:format) devise/registrations#create
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
root / home#index
非常感谢你的帮助!
答案 0 :(得分:3)
<%= link_to('Edit registration', edit_user_registration_path) %>.
没有通过我
<%= link_to('Edit registration', edit_user_registration_path(@user)) %>.
答案 1 :(得分:0)
问题不在于编辑注册链接,原因在于您的路线:
edit_profile GET /profiles/:id/edit(.:format) profiles#edit
指向个人资料页面的链接:
<%= link_to 'Edit Profile', edit_profile_path %>
edit_profile_path需要一个id
您需要传入要编辑个人资料的对象:
<%= link_to 'Edit Profile', edit_profile_path(@user) %>
或者,如果您希望配置文件仅对当前用户起作用,请将routes.rb中的配置设置为单一资源:
resource :profile
答案 2 :(得分:0)
我有同样的问题。通过编辑routes.rb解决了这个问题:
Rails.application.routes.draw do
if Rails.env == 'production'
default_url_options :host => "myserver.com"
else
default_url_options :host => "localhost:3000"
end