通过子访问父属性

时间:2017-06-24 17:38:15

标签: ruby-on-rails ruby

我这里有两个模特,群组和帖子。帖子属于组,组有很多帖子。这是我的问题。我有一个组的索引页面。我试图让侧边栏显示最新帖子列表。由于嵌套路由,我无法链接到帖子(我无法获得该组的正确参数,因为这一切都出现在组索引页面上)。以下是我第一次尝试这样做的方法:

<% @latest_posts.each do |post| %>
  <li><%= link_to post.title, group_post_path(@group, post) %></li>
  <li><%= post.group.title %></li>
<% end %>

我已经在同一个视图中浏览了一系列组:

<% @groups.each do |group| %>

  <div class="table-cell">
    <%= link_to group.title, group %>
  </div>

  <div class="table-cell">
    <%= group.description.truncate(70) %>
  </div>

<% end %>

因此,在我的组控制器中,我不能只将@group实例变量放入group_post_path参数中。这是我的控制者:

def index
  @latest_posts = Post.order('created_at DESC').limit(20)
  @groups = Group.order('created_at DESC').page(params[:page]).per(25)
end

所以我有两个问题。我的主要观点是我无法链接到帖子。我认为这样可行,但也不适用于那个(我设置了友好ID,所以我需要链接到组名而不是ID。)

<%= link_to post.title, group_post_path(post.group_id, post) %>

但是父母的任何属性都不可用。

<%= post.group.title %>

生成

undefined method `title' for nil:NilClass

在params中尝试它也是一样。

<%= link_to post.title, group_post_path(post.group.title, post) %>

我的模特:

class Post < ApplicationRecord
  belongs_to :group
class Group < ApplicationRecord
  has_many :posts

我怎样才能至少访问父属性?

0 个答案:

没有答案