Rails - 点击链接时切换布尔值

时间:2015-06-13 08:00:23

标签: ruby-on-rails simple-form

我试图用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

0 个答案:

没有答案