找不到行动

时间:2010-01-19 18:16:11

标签: ruby-on-rails

我想显示一个简单的HTML模板,因此我向控制器添加了一个新的空操作​​:

def calulator
end

并创建了视图calculator.html.erb。然后添加了一个链接:

<%= link_to 'Calculator', {:controller => "mycontroller", :action => "calculator"} %>

当我点击它时,我的日志显示以下错误:

ActionController::UnknownAction (No action responded to show. Actions: calculator, create, destroy, edit, index, new, and update):

为什么要寻找“显示”动作?我有控制器的map.resources,就像我用脚手架

做的那样

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

您需要添加指向动作“计算器”的自定义路线。 像这样:

map.connect 'mycontroller/calculator', :controller => 'mycontroller', :action => 'calculator'

答案 1 :(得分:1)

您可以为资源定义成员和集合。

map.resources :samples, :member => {:calculator => :get}

成员意味着它与资源的实例有关。例如/ samples / 1 / calculator。如果它与实例无关,则可以为集合定义它,并且可以通过/ samples / calculator进行访问。

map.resources :samples, :collection => {:calculator => :get}

这也为集合创建了一个帮助方法calculator_samples_path,为成员创建了calculator_sample_path(sample)。有关详细信息,请查看Railscast Episode 35

答案 2 :(得分:0)

您正在没有对节目做出响应,因为您将控制器路由为map.resources。当你这样做时,rails为你设置了几条路线。其中一个是show,它将与 / mycontroller / somevalue 匹配的每个 get 请求映射到{em> somevalue show操作>作为id(params[:id])。在mycontroller中,没有show操作,如错误消息中所示。

要解决这个问题,Nils或Trevoke的答案应该可以正常使用。

map.resources documentation