我在用戶和設置模型之間有一個has_one關聯。我也有設置控制器與編輯和更新操作。在頭版我有一個鏈接編輯設置:Rails:沒有路由匹配{:controller =>「settings」,:action =>「edit」}
<%= link_to (settings_path(current_user.setting)), do %>
..
<% end %>
這造成的ActionController :: RoutingError 沒有路由匹配{:控制器=> 「設置」,:動作=> 「編輯」} ..when嘗試顯示首頁。
我有點卡住了我的頭圍繞爲什麼發生這種情況。使用Devise進行用戶認證,這個current_user應該是一個全局變量。
這裏是如何路由在routes.rb中定義:
resources :setting, :only => [:edit, :update]
match '/settings/:id' => "settings#edit", :controller => :setting, :as => :settings
這裏是耙路線將返回:
edit_setting GET /setting/:id/edit(.:format) {:action=>"edit", :controller=>"setting"}
setting PUT /setting/:id(.:format) {:action=>"update", :controller=>"setting"}
settings /settings/:id(.:format) {:controller=>"settings", :action=>"edit"}
另一種猜測是,控制器的名稱(SettingsController)應爲單數,在使用has_one關聯時不是複數。出於某種奇怪的原因,Rails並沒有注意到我的控制器,儘管它非常有用。
幫助表示讚賞。
你可以把你的型號代碼請 – eveevans