【发布时间】:2013-05-19 03:12:38
【问题描述】:
我对 Rails 还很陌生,而且我已经被这个问题困扰了几个小时。我正在尝试显示用户喜欢的帖子和用户的实际帖子。
使用我当前的代码,我收到此错误“未定义的方法 `title' for #”,它是从以下行中提取的:“”。
有没有人能解释一下我如何才能让它工作? (下面有更多代码)
def show
@user = User.find_by_username(params[:id])
if @user
@posts = @user.posts.all + @user.likes.all
render actions: :show
@likes = @user.likes.all
else
render file: 'public/404', status: 404, formats: [:html]
end
end
这是我的路线文件:
resources :likes, only: [:create, :destroy]
resources :posts
devise_scope :user do
get 'register', to: 'devise/registrations#new'
get 'edit', to: 'devise/registrations#edit'
get 'login', to: 'devise/sessions#new'
get 'logout', to: 'devise/sessions#destroy'
end
这是“显示”视图:
<% if @posts %>
<% @posts.each do |post| %>
<%= link_to post.title, post %>
<% end %>
<% end %>
" display " 这是结果
<Post id: 11, title: "testing123", user_id: 2, created_at: "2013-05-18 19:25:45", updated_at: "2013-05-18 19:25:45"> #<Like id: 23, post_id: 10, user_id: 2, created_at: "2013-05-18 21:39:17", updated_at: "2013-05-18 21:39:17">
当我只使用它时它可以工作 -> @posts = @user.posts.all 但是当我使用它时问题就开始了 -> @posts = @user.posts.all + @user.likes.all
这给了我 "undefined method `title'" 消息..
【问题讨论】:
-
您能发布您的路线文件吗?
-
@derek_duncan 刚刚在上面添加了我的路线文件(已编辑)
-
你能不能也显示一下那条线在哪里?
-
@lis2 刚刚在上面编辑过
-
奇怪,你能不能代替 显示 以确保你真的得到了帖子对象?
标签: ruby-on-rails ruby-on-rails-3.2