男孩,這似乎是小菜一碟,但在routing bible我不能找到它 -改變從:標識在URL中的Rails 3路由
有沒有辦法來改變默認參數「:身份證'其他的東西像':pid'而不使用'match/post /:pid'?我想避免使用'匹配',因爲它感覺特別脆弱。
編輯要確認,這僅僅是一個成功,如果我能做到:
pid = params[:pid]
這樣做:
pid = params[:id]
作品了,但就是錯誤的代碼,因爲它不是在一個id那裏。
男孩,這似乎是小菜一碟,但在routing bible我不能找到它 -改變從:標識在URL中的Rails 3路由
有沒有辦法來改變默認參數「:身份證'其他的東西像':pid'而不使用'match/post /:pid'?我想避免使用'匹配',因爲它感覺特別脆弱。
編輯要確認,這僅僅是一個成功,如果我能做到:
pid = params[:pid]
這樣做:
pid = params[:id]
作品了,但就是錯誤的代碼,因爲它不是在一個id那裏。
您可以在模型中定義一個to_param
方法:
def to_param
pid
end
然後所有生成的鏈接的,等會使用的pid
代替id
。而在你的控制器中,params[:id]
實際上會給你pid
,而不是id
。
如果我給你正確的檢查了這一點:
http://railscasts.com/episodes/63-model-name-in-url
基本上你應該在模型覆蓋to_param
方法:
def to_param
pid
end
而當你將要獲取一個對象,做這在控制器中:
@object= Object.find_by_pid(params[:id])
祝你好運!
它實際上仍然使用'params [:id]',而不是'params [:pid]'(除非你使用':pid'作爲參數名稱來定義自定義路線)。 – 2011-04-11 16:22:21
固定它..我的壞 – 2011-04-11 16:25:40
正確,但這是一種氣味,因爲params [:id]有一個pid,而不是一個id。我想用params [:pid]來獲得pid。 – aronchick 2011-04-12 03:54:14
與上面相同的評論 - 我想使用params [:pid]來獲得pid,而不是params [:id]。 – aronchick 2011-04-12 03:54:47
然後,我很確定你需要硬編碼的路線,使之發生... – 2011-04-12 13:47:00
獲取檢查,因爲你打破了壞消息,我必須硬編碼的路線:( – aronchick 2011-05-11 22:46:43