2017-02-23 75 views
1

動態生成「新」動作URL我有以下任務:ROR:基於屬性

  1. 有事件的類別。
  2. 我只是通過將類別ID傳遞給事件的'新'動作來創建事件。
  3. 我需要在一個基於類別名稱的slug後面隱藏'new'動作的URL(類似於/ event?category_id = 1)。像這樣/ large_event,/ small_event。這意味着傳遞一個大型事件類別的ID應該顯示用戶的'新'形式的事件/ large_event URL

我試圖用友好的身份證寶石做到這一點。可能是Iam錯過了一些東西,但它允許爲模型製造一個slu g。但是我需要根據另一個模型的屬性爲一個模型創建一個「新」行爲。

類別的數量可能會有所不同 - 硬編碼不是一種選擇。有沒有優美的方式來做到這一點?

+0

查看路由的文檔http://edgeguides.rubyonrails.org/routing.html –

+0

@KcUS_unico,我找到了一種方法 - 剔除類別並使事件成爲嵌套資源。我會允許我擁有像/ small_category/events/new這樣的網址。但是我需要重寫已經測試過的代碼。任何其他想法? –

回答

0

我已經使用了兩件事來實現這個: 1.友好的ID gem爲類別生成slu and並生成如下所示的URL,以便用戶有權訪問「新」操作。 2. Rails路由約束與正則表達式。它看起來像

get "arenda/:category_slug" => 'auctions#new', constraints: { category_slug: /\w+/ } 

並完成它 - 我已經創建了一個合適的控制器來過濾掉不一致PARAMS和蛞蝓搜索。