将提交按钮标签设置为“创建模型”而不是在rails中的form_for中的“更新模型”

我正在使用form_for和现有模型渲染表单。 我想提交该模型并将下一个要执行的操作作为“创建”操作。 文档有这个例子:

   

并说“在上面的示例中,如果@post是新记录,它将使用”创建post“作为提交按钮标签,否则,它使用”更新post“。

我是相对较新的rails,我不知道如何使用I18n定制的文档中的以下内容。 如果有现有记录,如何让提交按钮使用“创建”?

澄清。 。 。

我将form_for从新动作中渲染出来,但我将它传递给现有对象,以便可以对字段进行预先解析。 我希望它然后转到创建操作,但它将转到更新。

更新。 。 。

我现在意识到问题在于form_for而不是提交,但还没有弄清楚如何修改form_for以便它发送到create动作。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-submit

有三个选项,您可以在翻译文件中覆盖它(config / locales / en.yml)。

 en: helpers: submit: create: "Create %{model}" update: "Create %{model}" 

或者,您可以在submit方法上指定值。

 f.submit("Create Post") 

或者,您可以保留默认情况下的翻译文件,并执行以下操作:

 f.submit(t('helpers.submit.create')) 

form_for将更新现有记录而不是创建,因此基本上您必须为其提供新记录。 执行此操作的最佳方法是使用record.dup控制器。 就像是

 @post = @existing_post.dup 

dup将创建一个浅拷贝,允许您savesave为新记录。