Ruby on rails 为什么取而代之的是符号?

Ruby on rails 为什么取而代之的是符号?,ruby-on-rails,ruby,Ruby On Rails,Ruby,试图进一步分解Rails代码,以便我能够理解发生了什么 <%= form_for :article do |f| %> <p> <%= f.label :title %><br> <%= f.text_field :title %> </p> <p> <%= f.label :text %><br> <%= f.text_area :tex

试图进一步分解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 %>
不,不想改变这个问题,或者其他任何问题。当我写这篇文章的时候,我一开始以为这两种方法都是可行的。但更糟糕的是,在阅读了回复后,我尝试了@,结果发现了错误


那么,想知道发生了什么事,还是只有我

是的,你的怀疑是正确的,但你读得不够远:

当您为调用表单_时,您将为此传递一个标识对象 形式。在这种情况下,它的符号是:文章。这说明了 这个表格是用来做什么的。在该方法的块中 FormBuilder对象(由f表示)用于构建两个标签 和两个文本字段,分别用于文章的标题和文本。 最后,对f对象的submit调用将创建一个submit按钮 为了表格

但是这个表单有一个问题。如果您检查HTML 这是通过查看页面的源代码生成的,您将看到 表单的action属性指向/articles/new。 这是一个问题,因为这条路线会到达您正在访问的页面 此时在右侧,该路线应仅用于显示 新文章的形式

表单需要使用不同的URL才能转到其他地方。 这可以非常简单地通过form_for的:url选项完成。 通常在Rails中,用于提交新表单的操作 这样就叫做“创建”,所以表单应该指向 这一行动

TLDR


使用
form_for(@article | | article.new)do | f |

我认为这个问题是重复的:+1这是一个有效的问题,我可以说这是试图理解Rails的一次认真尝试。然而,它可能会被mods标记为dup。在批判性地思考代码方面做得很好,而不仅仅是无视以下约定。form_for需要知道两件事:用于对象的“名称”(转换为字段名的第一部分)和对象本身。如果传递符号,帮助器将尝试在同名的实例变量中查找实际对象。文档中的更多信息:@Powers这些答案已经过时了嘿,各位,很抱歉回复了这么久。我必须去某个地方,然后当我回到这里。。。必须处理所有的评论并回答一点。还是有点困惑。嘿,谢谢你的回答。好的,请阅读您上面的段落,正如您所提到的,它来自指南链接。我不明白的是,它是如何告诉表单_for helper这个表单的用途的。我是说,你不需要对象的属性吗?符号通过了吗?还试过你的台词。顺便说一句,它很有效。所以谢谢你给我一个不同的尝试方法。我现在想了解的是这
| |
。那是电话还是接线员?所以,你的这句话的实质是说,要形成_,要么使用@article对象,要么构建一个新的article对象,然后循环它,对吧?还有(很抱歉有这么多评论!),请参阅我在上面帖子中的编辑。我的理解是,它们应该是可互换的符号和对象(是的,我明白了,不同形式的动作),当我试着放符号时,它们似乎不是。你知道为什么吗?呃,在阅读了MattJones的评论和回复后,我才意识到我的第一条评论是无效的,因为如果使用符号的话,表单_会查找对象,对吗?这就是属性传递的方式,对吗?
 <%= form_for :article do |f| %>
 <%= form_for @article do |f| %>