2012-08-16 27 views
0

我有這個如何在Javascript中使用Ruby設置url(js.erb)?

路線

put :sort, :path => 'activities/sort', :controller => 'activities' 

JS

url: '/activities/sort', 

我想轉換到這個地址(不使用控制器名稱或:作爲屬性)

url: <%= :action => 'sort' %>, 

或像這樣一樣HREF:

<%= link_to "Order by name", 
     :sort, 
     :method => :put %> 

回答

2

你應該寫航線這個網址。像:

的config/routes.rb中

match 'activities/sort_by_attr' => 'activities#sort', :as => :sort_by_attr 

然後寫

url: <%= sort_by_attr_path %>, 
+0

沒有其他辦法嗎?像這樣:'<%= link_to「Sort」, :sort, :method =>:put%> '或其他 – Predoff 2012-08-16 20:17:14

1

你會已經定義路由這樣resources :activitiesroutes.rb這將給你免費7條REST風格的路線。但是,您不限於默認情況下RESTful路由創建的七條路由。如果您願意,您可以添加適用於集合或集合的單個成員的其他路線。作爲選項,如:

resources :activities do 
    collection do 
    get 'sort_by_attr' 
    end 
end 

或者

resources :activities do 
    get 'sort_by_attr', :on => :collection 
end 

您可以使用任何路由指定一個名稱

resources :activities do 
    get 'sort_by_attr', :on => :collection, :as => :sort 
end 

,這將給你sort_activities_pathsort_activities_url。詳細瞭解Rails Routing from the Outside In

編輯:

如果你只是傳遞:action參數LINK_TO它會試圖找到在當前控制器路線和渲染動作。雖然不推薦,但你可以嘗試定義一個通用路線來匹配任何這樣的網址:

match ':controller/:action' 
+0

我編輯了我的問題。我不想使用:作爲屬性,因爲許多控制器有這個動作(排序) – Predoff 2012-08-16 20:15:44

+0

但我想通過:行動,和軌道在當前控制器中找到路線..簡單..我該怎麼做? '<%=:action =>'sort'%>'不起作用 – Predoff 2012-08-16 20:48:58