0

私は次の協会を持っています

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

 GroupLink:
    belongs_to :group

GroupLInks ビュー内からは見えない他のオブジェクトを含むレイアウト内の特定のグループに属するすべてのグループ リンクを表示したいと考えています。SO 私は次のように 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 から別のオブジェクトを表示できたことです。そのオブジェクト Controller 内でのインデックス アクションは必要ありません。GroupLinks にもまったく同じ設定をしていますが、この場合は機能しません...これを解決するのを手伝ってもらえますか?

4

2 に答える 2

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 ファイルで一致させることができます。

于 2013-03-22T10:48:50.170 に答える
0

このメソッドの適切なパスをレイアウトに入れていなかったことがわかりました。ルートは問題ありませんでしたが、このメソッドへの呼び出しはそうではありませんでした-私はそれを見つけるために頭を壊さなければなりませんでした:(...お時間をありがとう@Mosinと@RubyMan、感謝します!

于 2013-03-22T11:54:01.817 に答える