Ruby form_如何在rails中生成路径?
有谁能解释一下如何使用Ruby form_如何在rails中生成路径?,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,有谁能解释一下如何使用表单u为生成路径?。下面的代码生成一个路径文章注释路径 <%= form_for [@article, @comment] do |f| %> <% end %> 我的意思是它如何准确地生成文章注释路径而不是文章注释路径它使用多态路径方法来确定路径。这是一篇关于多态url的基本论文: 更新: polymorphic\u path正在内部使用名为build\u named\u route\u call的方法。当它得到一个数组时,它会从数组
表单u为生成路径?。下面的代码生成一个路径文章注释路径
<%= form_for [@article, @comment] do |f| %>
<% end %>
我的意思是它如何准确地生成文章注释路径
而不是文章注释路径
它使用多态路径
方法来确定路径。这是一篇关于多态url的基本论文:
更新:
polymorphic\u path
正在内部使用名为build\u named\u route\u call的方法。当它得到一个数组时,它会从数组中取出最后一条记录(使用pop
),然后迭代剩余的数组,将所有对象更改为
如果它是一个模型,它会接受它的类并调用'model\u name.singular\u route\u key'
如果是符号或字符串,则保持原样
然后剩下最后一个元素。它可以是单数也可以是复数,这可以通过下面的case语句在polymorphic_url
方法中解决:
inflection = if options[:action] && options[:action].to_s == "new"
args.pop
:singular
elsif (record.respond_to?(:persisted?) && !record.persisted?)
args.pop
:plural
elsif record.is_a?(Class)
args.pop
:plural
else
:singular
end
其中记录是数组的第一个元素(如果传递了数组)inlink
var然后被传递到build\u named\u route\u call
以便它可以生成正确的助手名称。正如您所看到的,此表单将根据第一个元素是否已持久化而生成不同的路径。您将在数组中向其传递单个文章和注释。类型是用来决定做什么的一种方式。你怎么说,我只传递一篇文章。生成/articles-then/article-right。是的,因为你不再传递数组,你传递的是一个特定类的对象。这整个魔法是如何工作的或如何生成的,任何与此相关的文章都可以深入研究。@Shane-没有比源代码本身更好的文章了。另外,阅读它可能是深入学习rails的最佳方式。我的意思是,它如何准确地生成文章注释路径而不是文章注释路径谢谢,如果可能的话,你能帮我解决这个问题吗。