0

如果我的控制器中有以下代码:

# encoding: utf-8
module Admin

  class SylabusController < BaseController


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

我有一个索引,我想在其中“调用”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 回答