link_to帮助器中的URL错误

时间:2017-05-06 06:04:03

标签: ruby-on-rails ruby link-to

当我在rails中使用link_to时

我知道表单是

link_to "Profile", profile_path(@profile)
# => <a href="/profiles/1">Profile</a>

但在我的代码中

<% @posts.each do |post|%>
  <h2><%=post.title %></h2>
  <p><%= post.content%></p>
  <%=link_to "show", posts_path(post.id) %>
<%end%>

我希望我的网址看起来像posts/1 但它是posts.1

2 个答案:

答案 0 :(得分:0)

尝试<%=link_to "show", post_path(post) %>

post不是posts。见http://guides.rubyonrails.org/routing.html

答案 1 :(得分:0)

link_to带有语法/签名link_to(name = nil, options = nil, html_options = nil, &block) 这使用由选项集创建的URL创建给定名称的链接标记。

签名;

link_to(body, url, html_options = {})
  # url is a String; you can use URL helpers like
  # posts_path

link_to(body, url_options = {}, html_options = {})
  # url_options, except :method, is passed to url_for

link_to(options = {}, html_options = {}) do
  # name
end

link_to(url, html_options = {}) do
  # name
end

我将从你的问题中采用相同的例子,

link_to "Profile", profile_path(@profile) 创造路径;

# => <a href="/profiles/1">Profile</a>

然而,<%=link_to "show", posts_path(post.id) %>创建了

# => <a href="/profiles.1">show</a>

创建适当路线的其他选项如下:

link_to "Profile", @profile
# => <a href="/profiles/1">Profile</a>

link_to "Profile", controller: "profiles", action: "show", id: @profile
# => <a href="/profiles/show/1">Profile</a>

希望这可以帮助您看到这个link_to apidoc