多くのボードがあるプロジェクトのネストされたルートを作成しようとしています。
まず、新しいボードへのリンクを作成しています。
<%= link_to 'New Board', new_project_board_path(@project) %>
ルート.rbで、RESTfulルートをネストしました。
resources :projects do
resources :boards
end
そして、ボードコントローラーで新しいものを適応させ、次のようにアクションを作成しました。
def new
@project = Project.find(params[:project_id])
@board = @project.boards.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @board }
end
end
def create
@project = Project.find(params[:project_id])
@board = @project.boards.new(params[:board])
respond_to do |format|
if @board.save
format.html { redirect_to @board, notice: 'Board was successfully created.' }
format.json { render json: @board, status: :created, location: @board }
else
format.html { render action: "new" }
format.json { render json: @board.errors, status: :unprocessable_entity }
end
end
end
少なくとも、_form.html.erbを次のように変更しました。
<%= form_for([@project, @board]) do |f| %>
等
私の問題は、ボードの作成ボタンをクリックすると(新しいアクションが実行されるように)、ルートが一致しないと表示されたときに始まります。プロジェクトのIDを取得しなくなったため、作成アクションに関係していると思いますか?他に何をどこで変更すればいいのか本当にわかりません。