有人可以解释我如何使用paths
生成form_for
吗?以下代码生成路径article_comments_path。
<%= form_for [@article, @comment] do |f| %>
<% end %>
我的意思是它如何完全生成article_comments_path
而不是articles_comment_path
答案 0 :(得分:1)
使用polymorphic_path
方法确定路径。它基本上是围绕polymorphic_url
:http://apidock.com/rails/v4.0.2/ActionDispatch/Routing/PolymorphicRoutes/polymorphic_url
更新
polymorphic_path
正在使用名为build_named_route_call
的内部方法。当它获得一个数组时,它会从数组中取出最后一条记录(使用pop
),然后迭代剩余的数组,将所有对象更改为
然后我们留下了最后一个元素。它可以是单数或复数,这可以通过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
其中record是数组的第一个元素(如果传递了数组)。然后将inlection
var传递给build_named_route_call
,以便它可以构建正确的帮助程序名称。如您所见,此表单将生成不同的路径,具体取决于第一个元素是否已经保留。