Ruby on rails 显示来自其他控制器的模板/布局

Ruby on rails 显示来自其他控制器的模板/布局,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有以下联想 Group: has_many :group_links, :dependent => :destroy GroupLink: belongs_to :group 我想在布局中显示属于特定组的所有组链接,该布局包括从GroupLInks视图中看不到的其他对象。因此,我想从GroupController呈现一个模板,如下所示: def group_links @group_links = @group.group_links.

我有以下联想

 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"
我在groupscontroller中有以下方法要初始化:

    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也有完全相同的设置,但在这种情况下不起作用……请你帮我解决这个问题?

我想问题是在你的控制器方法组链接中@group是nil。 您可以尝试这样做:

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文件中进行匹配。

结果是,我没有在布局中为该方法放置正确的路径。路线很好,但调用此方法却不行-我必须绞尽脑汁才能找到它:(…感谢您的时间@Mosin和@RubyMan,谢谢!

您是否为组链接操作创建了rout,您的链接指向组链接控制器的索引操作,而不是预期的组链接实际上我有这样的操作:在组控制器内我有操作:def get_group_links booth_links=group.group_links.all render:template=>'group_links/group_links',:layout=>'/layouts/sponsorted_group_manage_sub_menu'end,和内部路由我有以下资源:groups do member do get:get_group_links资源:group_links endHi Mosin,@group是已知的,因为我在初始化它的init_group方法中使用as:before\u filter:init\u group,:except=>[:create,:new]所以我不认为这是因为它找不到它。至于渲染模板,正如我所说,我在另一个方法中使用了类似的调用,它可以正常工作:(我不知道还有什么地方可以查看?