0
大家好我使用軌道2.在控制器上允許多種方法而不添加路由的最佳方式是什麼?
老派我其實我使用的軌道4,我試圖找到一種方法,在控制器上創建方法,而沒有書面方式
在軌道2使用:(只需要寫控制器上的名稱)
#controller
def report_a
end
def report_b
end
def report_c
end
...and whatever def
#ROUTES
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
在軌道4
#controller
def report_a
end
def report_b
end
def report_c
end
#ROUTES
match ':controller(/:action(/:id(.:format)))', :via => [:get, :post]
問題是,當我創建這樣一個觀點報告:(視圖/報告/ report_a.html.erb)
<%= form_tag :action=>"report_a" do %>
<% end %>
我得到這個消息:
No route matches [GET] "/reports/report_a"
要解決此問題,做的Rails instruccions是這樣的:
#controller
def report_a
@users= User.search(params[:name])
end
def result_report_a
@users= User.search(params[:name])
end
#view/reports/report_a.html.erb
<%= form_tag :action=>"result_report_a" do %>
<% end %>
#routes.rb
get "reports#report_a"
post "reports#result_report_a"
get "reports#report_b"
post "reports#result_report_b"
get "reports#report_c"
post "reports#result_report_c"
而且我發現這更好的辦法:
#controller reports.rb
def search_report_a
report_a
render :report_a
end
def report_a
@users = User.where(:name=>params[:name])
end
def search_report_b
report_b
render :report_b
end
def report_b
@users = User.where(:address=>params[:address])
end
...
#Routes.rb
resources :users do
match 'search_report_a', :via => [:post,:get], :on => :collection
match 'search_report_b', :via => [:post,:get], :on => :collection
...
end
有沒有其他的方式來創建方法而不需要在ROUTES.RB中添加所有的方法?
任何建議或唯一的方法是添加獲取和發佈?
想象一下你有幾種方法的情況。
報告沒有顯示頁面?如果您要獲得大量報告,則只需使用報告的ID即可。 – toddmetheny
我在控制器中使用def來進行搜索和導出信息。 –
例如def report_client end,view report_client.html.erb和def report_clien裏面使用的format.html,format.pdf和format.xls –