2013-03-03 72 views
0

传递link_to的变量ID时出现此错误。我无法读取该变量在接下来的页面(blog_details.html.erb)无法通过链接传递ID

错误:

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> 

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

回答

1

应该象下面这样:

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

<%= link_to (post.titulo), :controller => 'home', 
     :action => 'blog_details', :id => post.id %> 
+0

谢谢你。工作 – user1211674 2013-03-03 18:47:59

1

的问题是,你正在寻找params[:id]但传递:post_id。因此,要么寻找params[:post_id],或通过在:id => post.id

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 %>

+0

@Downvoter:为什么? – Intrepidd 2013-03-03 18:33:21

+0

谢谢你。工作 – user1211674 2013-03-03 18:48:29

0

的路径是什么回家#blog_details ..与路径哟?你可以这样做:

<%= link_to (post.titulo), blog_details_path(post) %>