0

我正在尝试显示一个页面,显示喜欢微博的用户。我希望 Uri 是 localhost:3000/microposts/someid#/into_it。似乎通过路径没有响应控制器?

我在 view/microposts/_micropost.html.erb 文件中链接到此页面:

<%= link_to micropost.votes_for, into_it_micropost_path(@micropost) %>

由于此路径,我在浏览器中收到以下错误并且页面未加载:

No route matches {:action=>"into_it", :controller=>"microposts", :id=>nil}

在我的微帖子控制器中:

def into_it  #for the view; displays who likes the post
  @title = "Into_it!"
  @micropost = Micropost.find(params[:id])
  render 'show_users_into_it'
end

micropost/show_users_into_it 当前是一个空白文件

路由文件:

resources :microposts, only: [:create, :destroy, :into_it] do
  member do
    get :into_it
  end
end

在耙式路线中,我有:

into_it_micropost GET    /microposts/:id/into_it(.:format)     microposts#into_it
4

2 回答 2

1

发生此错误是因为 @micropost 无效。@micropost 应该是来自数据库的对象。它应该有一个ID。在您的错误消息中,您可以看到 micropost 的 id 为 nil(我猜 @micropost 是新记录)。

:id=>#<Micropost id: nil

如果你通过现有的@micropost 一切都会好起来的。

于 2013-01-08T05:55:36.733 回答
0

真的只是一个愚蠢的错误。路线没有得到 id 参数。我所要做的只是改变:

into_it_micropost_path(@micropost)

into_it_micropost_path(micropost.id)

以便它从数据库中的现有记录中获取 id

于 2013-01-08T08:59:54.973 回答