Ben*_*zco 5 ruby ruby-on-rails
我有一个车型:
路线:
map.resources :vehicles, :has_many => :suppliers
Run Code Online (Sandbox Code Playgroud)
一切都很好,但Vehicle有一个布尔属性is_truck.我想做一个Alias所以我可以获得相同的资源只过滤卡车,我试过:
路线:
map.trucks '/trucks', :controller => :vehicles, :action => :index, :is_truck => true
map.trucks '/trucks/by_supplier/:supplier', :controller => :vehicles, :action => :index, :is_truck => true
Run Code Online (Sandbox Code Playgroud)
第一个效果很好,但是当我在表单中搜索时,第二个不起作用并搜索所有供应商.
控制器:
class VehiclesController
def index
if params[:supplier]
@vehicles = Vehicle.all :conditions => { :is_truck => params[:is_truck] }
else
@vehicles = Vehicle.all
end
end
...
end
Run Code Online (Sandbox Code Playgroud)
搜索表格:
<% form_for :truck, :url => {:controller => :trucks, :action => :index}, :html => {:method => :get} do |f| %>
<% f.text_field :search %>
<% f.submit 'Search Trucks' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
是否可以将map.resources作为别名?
我找到了一种更简洁的方法来做到这一点,但搜索在特定供应商下仍然无法正常工作:
# Show all vehicles
map.connect '/vehicles/supplier/:supplier', :controller => :vehicles, :action => :index
map.resources :vehicles
# Only show trucks
map.connect '/trucks/supplier/:supplier', :controller => :vehicles, :action => :index, :is_truck => true
map.resources :vehicles, :as => 'trucks', :requirements => { :is_truck => true }
Run Code Online (Sandbox Code Playgroud)
资源: http: //api.rubyonrails.org/classes/ActionController/Resources.html
| 归档时间: |
|
| 查看次数: |
2382 次 |
| 最近记录: |