Rails控制器未初始化的常量

时间:2013-02-27 07:23:04

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

此问题与this一个问题有关:

我的表格:

</br>
<%= form_tag view_all_rater_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search], :placeholder => 'Search by Set # or date' %></br>
    <%= submit_tag "Search", :class => "btn btn-link", :name => nil %>
  </p>
<% end %>

我的路线:

  resource :rater, :only => [] do
    collection do
      get :rater_csv
      get :view_all
    end
  end

我的控制器:

class RaterController < ApplicationController
  def index
  end

  def view_all
    if params[:search]
      @ratings = RatingSet.find(:all, :conditions => ['id = ? or rating_date like ?', "#{params[:search]}", "%#{params[:search]}%"])
    else
      @ratings = RatingSet.all
    end
  end
end

我使用单一资源的路线:

  rater_csv_rater GET    /rater/rater_csv(.:format)    raters#rater_csv
   view_all_rater GET    /rater/view_all(.:format)     raters#view_all

我的多条资源路线:

  rater_csv_rater GET    /rater/rater_csv(.:format)    rater#rater_csv
   view_all_rater GET    /rater/view_all(.:format)     rater#view_all

我真的很困惑为什么要定义一个奇异的资源raters#view_all

当我定义单一资源时:uninitialized constant RatersController 当我定义复数资源时:undefined local variable or method view_all_rater_path'`

4 个答案:

答案 0 :(得分:0)

在您的路线中添加。

resources : raters

答案 1 :(得分:0)

将您的路线更改为

resources :rater, :only => [] do
  collection do
    get :rater_csv
    get :view_all
  end
end

答案 2 :(得分:0)

使用单一资源,您仍然需要一个复数控制器,因此错误表示为RatersController

使用复数资源,它将是view_all_raters_path

答案 3 :(得分:0)

为什么不使用命名空间,因为你没有在rater中使用任何路由

namespace :raters do
  get 'rater_csv'
  get 'view_all'
end

将控制器重命名为RatersRater