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

时间:2012-02-06 23:42:18

标签: ruby-on-rails form-for

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

<%= form_for @post do |f| %>
  <%= f.submit %>
<% end %>

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

我对rails相对较新,并且不确定在使用I18n进行自定义的文档中如何制作以下内容。如果有现有记录,如何让提交按钮使用“创建”?

澄清。 。 。

我正在将form_for渲染出新动作,但我将它传递给现有对象,以便可以预先填充字段。我希望它然后转到创建操作,但它会转到更新。

更新。 。

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

2 个答案:

答案 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作为新记录。