我想在Rails 4中制作应用程序。Rails 4&Controller动作
我有三个模型 - Project,Scope和Finalize。
的关联是:
项目有一个范围 范围属于项目,他有一个敲定 敲定属于范围
范围接受嵌套属性来最终确定。
在最终确定,我有一个名为属性:草案(布尔),并称为属性:finalised_at(日期时间)
我试着写它可以让我把一个链接上的任何项目,创建了一个功能:草案保存为真。该链接旨在将草稿切换为false,然后在已完成的项目上显示发布日期(:finalised_at)。
我收到一个错误,它阻止了我创建一个测试项目。错误是:未定义的局部变量或方法`create_a_finalise' - 引用我的项目控制器中的创建操作。我认为这与我的scope.rb模型中的create_a_finalise方法有关。我不知道如何解决这个问题。
我finalise.rb有:
after_validation :set_publish_time
def set_publish_time
self.finalised_at = Time.now unless self.draft
end
我scope.rb有:
after_create :create_a_finalise
def create_a_finalise_dynamic(boolean)
self.finalise.create draft: boolean
end
我finalise_controller有:
def toggle_draft
@finalise = Finalise.find(params[:finalise_id])
@finalise.draft = false
if @finalise.save
redirect_to project_path(@finalise.scope.project), notice: 'Successfully Updated'
else
redirect_to project_path(@finalise.scope.project), alert: 'Not Updated'
end
end
我project_controller的问题的部分有:
def create
#authorise @project
@project = Project.new(project_params)
@project.creator_id = current_user.id
@project.users << current_user
respond_to do |format|
if @project.save
format.html { redirect_to @project }
format.json { render action: 'show', status: :created, location: @project }
else
format.html { render action: 'new' }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
任何人都可以看到我需要做什么才能创建一个新项目。我的项目控制器中的创建操作有问题。
谢谢
嗨克洛伊,我试过,但随后它与方法的错误:未定义的局部变量或方法'布尔”为#<范围:0x0000010dad0ee0> – Mel
那么你也必须从'#create'中删除参数! 'self.finalise.create draft:boolean'。将其设置为像“true”这样的硬编码值。 – Chloe
我没有任何东西在我的最终控制器中为此创建操作。不明白你的意思 – Mel