不知道怎樣提出這個所以這裏去....如何從Rails link_to函數中刪除動作參數?
我有以下的link_to標籤:
<%= link_to("My test title",{:controller=>"search", :action=>"for-sale", :title => listing.title, :search_term => search_term, :id=> listing.id}) %>
,並在我的routes.rb文件中的以下自定義路線:
map.connect ':controller/:action/:title/search_item/:id', :controller=>'search', :action=>'for_sale'
產生一個非常好的SEO友好的URL:
/search/for-sale/sometitle/searchterm/123456
哪有我刪除了:從兩個動作PARAM,問題是,當我拿出了:操作選項&我的link_to標籤更改爲:
<%= link_to("My test title",{:controller=>"search", :title => listing.title, :search_term => search_term, :id=> listing.id}) %>
和我的自定義路線:
map.connect ':controller/:title/search_item/:id', :controller=>'search', :action=>'for_sale'
生成的URL不再是搜索引擎友好的和非常難看:
/search?title=test&search_term=test&id=1141409
我的自定義路由將重定向到控制器中的正確動作,所以沒有必要採取行動的選項是在URL 。任何時候我刪除或重命名:action選項爲其他 - URL被「扭曲」,你知道我該如何做到這一點?
一直在嘗試多種選擇,但似乎沒有任何工作。
謝謝!
感謝您的! 使用指定的路由,雖然我失去了所有的參數,當我輸出參數。檢查待售頁面,散列不包含任何內容,它們在某處丟失,是否使用命名路由並仍然傳遞參數? – Jason 2010-04-27 23:23:21
我發現這個問題,當其中一個參數是空白或空的,然後沒有任何參數傳遞給動作,它需要所有的參數有一些值,search_term是一個可能經常是空白的字符串....有任何想法嗎? – Jason 2010-04-28 00:19:58
您可以使路線末端的參數爲可選。在答案中增加了信息。 – Voyta 2010-04-28 06:33:36