我有以下协会
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中显示另一个对象,而不需要在该对象Controller中进行任何索引操作。我也为GroupLinks提供完全相同的设置,但在这种情况下它不起作用...请帮我解决这个问题?
答案 0 :(得分:0)
我认为问题是你的控制器方法group_links中的@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文件中匹配。
答案 1 :(得分:0)
事实证明我没有在我的布局中放置这个方法的正确路径。路线很好,但是对这种方法的调用不是 - 我不得不打破我的想法:( ...感谢你的时间@Mosin和@RubyMan,欣赏它!