我正在尝试显示一个显示喜欢微博的用户的页面。我希望Uri是localhost:3000 / microposts / someid#/ into_it。似乎通过路径没有响应控制器?
我在视图/ 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
在rake路线中我有:
into_it_micropost GET /microposts/:id/into_it(.:format) microposts#into_it
答案 0 :(得分:1)
由于无效的@micropost而发生此错误。 @micropost应该是数据库中的对象。它应该有一个id。在您的错误消息中,您可以看到微博的id为nil(我猜@micropost是新记录)。
:id=>#<Micropost id: nil
如果您通过现有的@micropost,一切都会好的。
答案 1 :(得分:0)
into_it_micropost_path(@micropost)
到
into_it_micropost_path(micropost.id)
以便从数据库中的现有记录中获取id