各プロジェクトは単一のページを持つことができます:
resources :project do
resource :page
end
class Project < ActiveRecord::Base
has_one :page
end
class Page < ActiveRecord::Base
belongs_to :project
end
def new
@project = Project.find(params[:project_id])
@page = @project.build_page
respond_to do |format|
format.html
end
end
def create
@project = Project.find(params[:project_id])
@page = @project.build_page(params[:page_id])
respond_to do |format|
if @page.save
format.html { redirect_to @page, :notice => 'Page was successfully created.' }
else
format.html { render action: "new" }
end
end
end
しかし、ページを保存しようとすると、ルーティング エラーが発生するだけでなく、実際にはデータベースに保存されません。
Routing Error
No route matches [POST] "/projects/2/pages"
私のフォームアクションは次のようになります:
<%= form_for([@job, @page]) do |f| %>
何が起こっているのか誰にもわかりませんか?私は他のSOの投稿からこれらすべてをつなぎ合わせましたが、あちこちで行を変更するほど、実用的な解決策から遠ざかっているように感じます. たとえば、フォーム アクションを次のように変更するとします。
<%= form_for @page, url: job_page_path(@job) do |f| %>
すべてが魔法のように機能しますが、編集アクションはまだ壊れています。私はどのような基本的な概念を屠殺していますか?
ありがとう! - マーク