0

コントローラーに次のコードがある場合:

# encoding: utf-8
module Admin

  class SylabusController < BaseController


  def show_all
      @questions = @topic.questions.all
    end

そして、すべての質問を含む新しい Web ページを表示するために、show_all を「呼び出し」たいインデックスがあります。リンクはどうする?

 <%= link_to 'All the questions'.html_safe, @sylabus.show_all, class: 'btn' %>

次のエラーで。

NoMethodError in Admin/mupets#index

Showing app/views/admin/sylabus/index.html.erb where line #41 raised:

undefined method `show_all' for nil:NilClass

リンクコードの間違いですか?または、ルートで何かを定義する必要がありますか?

お時間をいただき、ありがとうございました

4

2 に答える 2

1

コントローラーのアクションに直接リンクすることはできません。ルーティング テーブルを介してコントローラー/アクションに接続されているリクエストのみを行うことができます。

そのアクションに到達するルートが必要です。次に、ユーザーに出力をレンダリングするビューが必要です。

于 2013-10-11T20:15:26.497 に答える
0

あなたのSylabusController

def index
   # are you sure that @topic is not null?
   @questions = @topic.questions
end

あなたの見解では

 <%= link_to 'All the questions', @questions, class: 'btn' %>

コントローラーアクションに関連付けられたクラス変数を取得するだけです:)

于 2013-10-11T20:46:22.017 に答える