此问题与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'`
答案 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
将控制器重命名为Raters
或Rater