0

传递 link_to 的变量 ID 时出现此错误。我无法读取下一页中的变量 (blog_details.html.erb)

错误:

ActiveRecord::RecordNotFound in HomeController#blog_details

Couldn't find Post without an ID

我的家庭控制器:

class HomeController < ApplicationController

  def blog
    @posts = Post.all
  end

  def blog_details
    @post = Post.find(params[:id])   
  end

end

我与变量的链接:

<div class="post-title">                
  <h2 class="title">
    <%= link_to (post.titulo), :controller => 'home', 
          :action => 'blog_details', :post_id => post.id %>
  </h2>
</div>

有人可以帮我解决这个错误吗?

4

4 回答 4

1

它应该如下所示:

def blog_details
  @post = Post.find(params[:post_id])   
end

或者

<%= link_to (post.titulo), :controller => 'home', 
      :action => 'blog_details', :id => post.id %>
于 2013-03-03T18:25:56.973 回答
1

问题是您正在寻找params[:id]但传入:post_id. 所以要么寻找params[:post_id],要么传入:id => post.id

于 2013-03-03T18:27:00.100 回答
1

你通过了 post_id 而不是 id :

这应该工作:

<div class="post-title">                
  <h2 class="title">
    <%= link_to (post.titulo), :controller => 'home', 
          :action => 'blog_details', :id => post.id %>
  </h2>
</div>

考虑使用命名路由或资源,这样你就可以以这样的方式结束:

<%= link_to post.titulo, post %>

于 2013-03-03T18:27:04.560 回答
0

home#blog_details 的路径是什么?..使用该路径,您可以执行以下操作:

<%= link_to (post.titulo),  blog_details_path(post) %>
于 2013-03-03T18:28:05.013 回答