link_to 显示页面将我带到索引页面 Rails?

link_to Show page takes me to the index page Rails?

我正在尝试在我的应用程序中设置一个仪表板,其中列出了用户拥有的所有评论。我遇到的问题是,当我单击用户发表评论的 post 时,它会将我带到所有 post 的索引页面,而不是特定 [=] 的显示页面29=]。这是我遇到问题的代码行 <td><%= link_to review.post.title , posts_path(@post) %></td> .这是我的代码:

views/pages/dashboard.html.erb

<div class="align-left">



<div class="col-md-2">
<h5><%= @user.name %></h5>


</div>
<div class="col-md-5">
<h3>My Posts</h3>

<table class="table table-hover">
      <thead>
        <tr>
          <th>Name</th>
          <th>Created</th>
          <th></th>
        </tr>
      </thead>
      <tbody>
      <% @posts.each do |post| %>
        <tr>
          <td><%= post.title %></td>
          <td><%= time_ago_in_words(post.created_at) %> ago</td>
          <td><%= link_to "Edit", edit_post_path(post) %>|<%= link_to "Destroy", post_path(post), method: :delete %></td>
        </tr>
      <% end %>
      </tbody>
    </table>

</div>

<br>

<h3>My Reviews</h3>
<table class="table table-hover">
      <thead>
        <tr>
          <th>Place</th>
          <th>Created</th>
          <th></th>
        </tr>
      </thead>
      <tbody>
      <% @reviews.each do |review| %>
        <tr>
         <td><%= link_to review.post.title , posts_path(@post) %></td> 
        <td><%= time_ago_in_words(review.created_at) %> ago</td>
        </tr>
      <% end %>
      </tbody>
    </table>
</div>

</div>

Rake 路由文件

应该是<%= link_to review.post.title, post_path(@post) %>,
或者只是 <%= link_to review.post.title, @post %>
不是 <%= link_to review.post.title, posts_path(@post) %>.

dashboard.html.erb 页面上有一个实例变量@posts 而不是@post。 你可以通过 review.post 获得 post,比如:-

<td><%= link_to review.post.title , post_path(review.post) %></td> 

此外,您可以这样做,而不是一次又一次地调用关联:-

<% @reviews.each do |review| %>
    <tr>
    <% review_post = review.post %>
     <td><%= link_to review_post.title , post_path(review_post) %></td> 
    <td><%= time_ago_in_words(review.created_at) %> ago</td>
    </tr>
<% end %>

您没有正确检查您的路线:

posts_path 用于 index 方法,对于 show 方法,它是 post_path with id 或对象。

使用:

<td><%= link_to review.post.title , post_path(@post) %></td>