我使用form_for和现有模型渲染表单。我想提交该模型并将下一个要执行的操作作为“创建”操作。 docs有这个例子:
<%= form_for @post do |f| %>
<%= f.submit %>
<% end %>
并说“在上面的示例中,如果@post是新记录,它将使用”创建帖子“作为提交按钮标签,否则,它使用”更新帖子“。”
我对rails相对较新,并且不确定在使用I18n进行自定义的文档中如何制作以下内容。如果有现有记录,如何让提交按钮使用“创建”?
澄清。 。 。
我正在将form_for渲染出新动作,但我将它传递给现有对象,以便可以预先填充字段。我希望它然后转到创建操作,但它会转到更新。
更新。 。
我现在意识到问题在于form_for而不是提交,但还没有弄清楚如何修改form_for以便它发送到create动作。
答案 0 :(得分:3)
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}"
或者您可以在提交方法上指定一个值。
f.submit("Create Post")
或者,您可以将翻译文件保留为默认状态并执行:
f.submit(t('helpers.submit.create'))
答案 1 :(得分:0)
form_for
会更新现有记录而非创建,因此基本上您 可以为其提供新记录。执行此操作的最佳方法是使用record.dup
的控制器。像
@post = @existing_post.dup
dup
会创建一个浅表副本,允许您将save
作为新记录。