将提交按钮标签设置为“创建模型”而不是在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
将创建一个浅拷贝,允许您save
其save
为新记录。