Ruby on rails 在({:controller:,:action})的:url与url_之间跟踪不同的行为

Ruby on rails 在({:controller:,:action})的:url与url_之间跟踪不同的行为,ruby-on-rails,Ruby On Rails,为什么我的视图文件中有这样的链接: <%= link_to image_tag("foo.png"), :url => new_foo_path, :class => "banner-image" %> <a href="/home/index?class=banner-image&amp;url=http%3A%2F%2Flocalhost%3A3000%2Ffoo%2Fnew"><img alt="foo" src="/assets/foo

为什么我的视图文件中有这样的链接:

<%= link_to image_tag("foo.png"), :url => new_foo_path, :class => "banner-image" %>
<a href="/home/index?class=banner-image&amp;url=http%3A%2F%2Flocalhost%3A3000%2Ffoo%2Fnew"><img alt="foo" src="/assets/foo.png"></a>

您可以直接在链接到中使用新路径。无需为其添加
:url=>

<%= link_to your-text-or-image-tag, your-path %>


有关更多信息,请查看链接。

您可以直接在
link\u to
中使用
new\u foo\u路径。无需为其添加
:url=>

<%= link_to your-text-or-image-tag, your-path %>

有关更多信息,请查看链接。

查看源代码:

这是因为在第一种形式中,您实际上是在方法接受的
选项
散列中传递
url
&
。换句话说,您正在这样做:

<%= link_to image_tag("foo.png"), { :url => new_foo_path, :class => "banner-image" } %>
它将第一个散列作为
选项
散列传递,第二个作为
html\u选项
散列传递

但是,正如其他人所提到的,您可以:

<%= link_to image_tag("foo.png"), new_foo_path, :class => "banner-image" %>
“横幅图像”%>
它将把
new\u foo\u路径
作为
:url
中的值传递给
{:class=>'banner image'}
作为
html\u选项
散列。

查看源代码:

这是因为在第一种形式中,您实际上是在方法接受的
选项
散列中传递
url
&
。换句话说,您正在这样做:

<%= link_to image_tag("foo.png"), { :url => new_foo_path, :class => "banner-image" } %>
它将第一个散列作为
选项
散列传递,第二个作为
html\u选项
散列传递

但是,正如其他人所提到的,您可以:

<%= link_to image_tag("foo.png"), new_foo_path, :class => "banner-image" %>
“横幅图像”%>

它将
new_foo_path
作为
:url
中的值传递,而
{:class=>'banner image'}
作为
html_选项
散列。

如果我记得您不需要在第一个示例中传递:url参数
“banner image”%>
应该可以工作,如果我记得您不需要在第一个示例中传递:url参数<代码>“横幅图像”%>
应该可以工作
<%= link_to image_tag("foo.png"), new_foo_path, :class => "banner-image" %>