我正在尝试为具有许多板的项目创建嵌套路由。
首先,我正在创建一个指向新版块的链接:
<%= link_to 'New Board', new_project_board_path(@project) %>
在 routes.rb 我只是嵌套了宁静的路线:
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?我真的不知道还有什么可以改变的以及在哪里改变。