我试图用rails 4和简单的形式制作应用程序。
我有一些名为Project,Scope和Finalize的模型。 Finalize属于Scope。范围属于项目。 Project接受Scope和Finalize的嵌套属性。 Scope接受Finalize的嵌套属性。
我在Finalize表中有一个名为:draft。
的属性如果用户创建了一个项目并将:draft设置为true,那么我会显示一个链接,单击该链接后会更改:draft为false。
我的观点中有以下链接:
<%= link_to 'Finalise draft', finalise_toggle_draft_path(@project.scope.finalise.id), method: :patch %>
我的控制器中有以下方法:
def toggle_draft
@finalise = Finalise.find(params[:finalise_id])
@finalise.draft = false
@finalise.finalised = Time.now
@finalise.save
redirect_to project_path(Project.find(params[:project_id]))
end
当我尝试这个时,我收到一条错误消息:无法找到没有ID的项目
有谁知道我做错了什么?
我的最终确定路线是:
finalise_toggle_draft PATCH /finalises/:finalise_id/toggle-draft(.:format) finalises#toggle_draft
finalises GET /finalises(.:format) finalises#index
POST /finalises(.:format) finalises#create
new_finalise GET /finalises/new(.:format) finalises#new
edit_finalise GET /finalises/:id/edit(.:format) finalises#edit
finalise GET /finalises/:id(.:format) finalises#show
PATCH /finalises/:id(.:format) finalises#update
PUT /finalises/:id(.:format) finalises#update
DELETE /finalises/:id(.:format) finalises#destroy