Rails。为什么我的提交按钮显示创建与更新取决于

Rails. Why does my submit button say Create vs. Update depending on

对新手要温柔一点......

Ruby 版本 2.2.2p95,Rails 版本 4.2.1。

我完成了示例博客应用程序。效果很好,我一直在扩展它。但我是菜鸟,显然缺少一些基本的东西。在主索引中,您会看到一个文章列表,并且有一些 link。

一个link是新建文章:

<%= link_to 'Post New Article', new_article_path %>

另一种是编辑现有文章。

<%= link_to 'Edit', edit_article_path(article) %>

第一个实例调用 new.html.erb 视图,第二个实例调用 edit.html.erb。这些文件是相同的,并呈现部分 _form.html.erb

表格是一样的,但是因为你走的是不同的路径,所以产生的动作是不同的。很好,但是为什么提交按钮在一个实例中在浏览器中显示为 Create Article,而在另一个实例中显示为 Update Article?那是从哪里来的?我正在使用相同的表单做 2 件不同的事情,是什么导致按钮文本发生变化?

它在 Rails 框架 中定义。每当调用新方法时 params[:action] = 'new',因此,对于 form 我们使用 f.submit。这个 f 对象是那个 new 方法的实例。因此框架决定显示按钮名称'New Article'。 Articleobjectnewaction

对于更新,params[:action]edit。但由于我们使用 PATCH/PUT 方法进行更新,rails 显示按钮名称 f.submit = 更新文章