私はユーザーと設定モデルの間にhas_oneの関連付けを持っています。私はまた、編集アクションと更新アクションを持つSettingsControllerを持っています。しようとして..whenRails:ルートが一致しません{:controller => "settings"、:action => "edit"}
<%= link_to (settings_path(current_user.setting)), do %>
..
<% end %>
この原因ActionController :: RoutingError Noルートマッチ{::アクション=> "編集":コントローラ=> "設定"、}フロントページに私は設定を編集するためのリンクを持っていますフロントページを表示する。
なぜこのようなことが起こっているのか、頭がいっぱいです。ユーザー認証にDeviseを使用する場合、このcurrent_userはグローバル変数でなければなりません。ここで
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)は単数形でなければならないことで、ここで
はルートがroutes.rbをで定義されている方法ですhas_one関連付けを使用するときは複数ではありません。奇妙な理由のために、Railsはコントローラが存在するにもかかわらず、コントローラに気づいていません。
お手数ですが、
あなたのモデルコードは – eveevans