【发布时间】:2014-02-17 01:14:38
【问题描述】:
尝试更多地分解 Rails 代码,以便我了解正在发生的事情
<%= form_for :article do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_area :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
此代码来自 edgeguides 的 5.2 部分:http://edgeguides.rubyonrails.org/getting_started.html
<%= form_for :article do |f| %>
那条线困扰着我。为什么它是一个符号而不是@article?
@article 将是 Article 对象的一个实例,对吧?你不想要form_for吗?
ps。随意编辑标题以更好地反映这篇文章。
编辑 ...我理解为什么这篇文章被标记为重复,我可以让它保持原样。
但是,我只需要发布这个。我不知道这是我(即我的错误)还是我正在处理 Rails 4 的事实,但是当我将它从符号 (:article) 更改为对象 (@article) 时 - 我收到了这个错误当我刷新新页面时。
这是错误:First argument in form cannot contain nil or be empty
为了澄清,这是我更改的行:
<%= form_for @article do |f| %>
不,不是试图改变问题,或任何其他的。当我写这篇文章时,我最初假设这两种方法都可以。但只是为了它,在阅读回复后,我尝试了@,并得到了那个错误。
那么,想知道发生了什么事,还是只有我一个人?
【问题讨论】:
-
+1 这是一个有效的问题,我可以说这是尝试理解 Rails 的认真尝试。但是,它可能会被 mods 标记为 dup。善于批判性地思考您的代码,而不仅仅是遵循惯例。
-
form_for 需要知道两件事:用于对象的“名称”(转换为字段名称的第一部分)和对象本身。如果您传递一个符号,帮助程序将尝试在同名的实例变量中查找实际对象。文档中的更多信息:api.rubyonrails.org/classes/ActionView/Helpers/…
-
@Powers 那些答案已经过时了
-
大家好,很抱歉这么长时间才回复。不得不去某个地方,然后当我回到这个......必须处理所有的 cmets 并回答一下。还是有点糊涂。
标签: ruby-on-rails ruby