我对 Rails 还很陌生,我已经被这个问题困住了几个小时。我正在尝试显示用户喜欢的帖子和用户的实际帖子。
使用我当前的代码,我收到此错误“未定义的方法 `title' for #”,它是从这一行中提取的:“<%= link_to post.title, post %>”。
任何人都可以阐明我如何使它起作用吗?(下面有更多代码)
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 %>
" <%= link_to post.title, post %> display <%= post.inspect %> " 这里是结果
<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
这给了我“未定义的方法‘标题’”消息..