未知动作轨道

时间:2014-07-15 01:55:09

标签: ruby-on-rails

我的轨道路线中存在这个非常奇怪的问题。

我收到以下错误:

Unknown action The action 'blah_sdk' could not be found for AdminController

当在网页上按下按钮时会发生这种情况。按钮代码位于此处,位于BlahBase/index.html.erb

<div id="sdk_metrics"><%= button_to "Click me", {:action =>:view_sdk_data, :method => :get} %></div>

我的BlahBaseController没有:view_sdk_data动作。 BlahBaseController标题如下所示:

class Admin::BlahBaseController < AdminController

我的BlahSdkControllerAdmin::BlahBaseController的子类,其view_sdk_data动作如此:

class Admin::BlahSdkController < Admin::BlahBaseController

  def view_sdk_data
    #do something
  end
end

但由于某种原因,铁路一直试图查看AdminController,我不知道为什么。有什么想法吗?

编辑: 这也是我的路线文件的样子

resources :blah_sdk do
  collection do
    get :view_sdk_data
  end
end

2 个答案:

答案 0 :(得分:0)

如果您的BlahBase控制器呈现您拥有{:action => :view_sdk_data}链接的索引操作...那么url_for(生成您的网址与路由)将假设您仍然需要相同的控制器(即{{1} } BlahBase}。

如果你想要另一个控制器,你必须告诉它,例如使用:BlahSdk

答案 1 :(得分:0)

<强>路线

我的建议是为您的路线添加namespace或范围:

#config/routes.rb
namespace :admin do
    resources :blah_sdk do
        collection do
           get :view_sdk_data
        end
    end
end

-

路径助手

我的第二个建议是使用实际的路径助手,而不仅仅是引用action。这不仅可以使代码保持DRYer,还可以确保每次都发送到正确的路径/操作。

我会这样做:

<%= button_to "Test", admin_view_sdk_data_path %>

通常,在Rails中使用内置帮助程序更好总是。它可能听起来很蹩脚,但您可以依靠它们来提供正确的功能