だから私はスコープルートとform_forでこの問題に遭遇しました:form_forとscopes、rails 3
すべてのメソッドのスコープを設定するだけではないので、GET / showを除いて、すべてを「/admin」の下に配置する必要があります。
したがって、私のroutes.rbには次のようなものがあります。
scope '/admin' do
resources 'lessons', except: [:show]
end
get "lessons/:id" => "lessons#show", :as => "lesson"
rakeルートを実行すると、実際には、両方のバージョンのlesson_pathがメソッド、PUTとGETによってのみ異なる場合に必要なものが示されます。したがって、他の人が提供するソリューションは、次のようなことを行う場所です。
url = @lesson.persisted? ? lesson_path(@lesson) : lessons_path
form_for @lesson, url: url do
lesson_path(@lesson)は、フォームを壊す/ adminプレフィックスのないGETパスを常に返すため、機能しません。
だから私が理解できないのは、/ adminで始まるルートを使用するように、Railsパスヘルパーでメソッドを指定できますか?それとも、これを達成するためのまったく異なる方法がありますか?私は、以下を変更することで、洞窟を作り、単純に曖昧さを解消できることを知っています。
get "lessons/:id" => "lessons#show", :as => "lesson"
に
get "lessons/:id" => "lessons#show", :as => "show_lesson"
しかし、この時点で、それが可能かどうか、もしそうなら「正しい」方法は何かを知りたいだけです。