0

我有以下关联

 Group:
   has_many :group_links, :dependent => :destroy

 GroupLink:
    belongs_to :group

我想在布局中显示属于特定组的所有组链接,其中包括在 GroupLInks 视图中不可见的其他对象。所以我想从 GroupController 呈现一个模板,如下所示:

     def group_links
          @group_links = @group.group_links.all
          render :template => 'group_links/group_links', :layout => 
                              '/layouts/sponsored_group_manage_sub_menu'
     end

但我收到以下错误:

       The action 'index' could not be found for GroupLinksController

如果我为 GroupLinks 创建一个“索引”视图并尝试在包含其他对象的布局中显示它,则会引发错误

      "You have a nil object"

我有以下方法在我的组控制器中进行初始化:

    def init_group
      @group = Group.find_by_id(params[:id])
      @group_blog_tags=@group.blog.blog_posts.tag_counts
      @booth_links = @group.group_links.all
      max_id = Group.count_by_sql("select min(profile_id) from (select profile_id from 
               group_memberships where group_id = #{@group.id} order by profile_id desc 
               limit 200) as x")
      @booth_members = @group.members.all(:conditions => "profiles.id >= #
      {rand(max_id)+1}", :limit => 20).to_a.sort! { |a,b| rand(3)-1 }
    redirect_to groups_explorations_path unless @group
   end

这些其他对象在组布局中用于显示其他对象。问题是我能够显示 GroupsController 中的另一个对象,而无需在该对象控制器中进行任何索引操作。我对 GroupLinks 也有完全相同的设置,但在这种情况下它不起作用......请你帮我解决这个问题吗?

4

2 回答 2

0

事实证明,我没有在我的布局中放置此方法的正确路径。路线很好,但对这个方法的调用不是 - 我不得不打破我的头找到它:(...感谢您的时间@Mosin和@RubyMan,感谢!

于 2013-03-22T11:54:01.817 回答
0

我认为问题在于您的控制器方法 group_links 中的 @group 为零。您可以尝试这样制作:

def group_links
    @group = Group.find(params[:id])  
    @group_links = @group.group_links.all
    render :template => 'group_links/group_links', :layout => 
                      '/layouts/sponsored_group_manage_sub_menu'
end

但我不确定这是否能正常工作:

render :template => 'group_links/group_links', :layout => 
                      '/layouts/sponsored_group_manage_sub_menu'

您可以尝试将模板放在名称为“group_links”的正确视图文件夹中,并在您的 routes.rb 文件中匹配。

于 2013-03-22T10:48:50.170 回答