[英]Rails routing - optional parameters not working
我的routes.rb文件中包含以下代碼:
get 'page/contact_us(/:year(/:month))'=>'page#contact_us', :as => 'contact_us'
這個想法是在URL中輸入年份和月份是可選的。 但是,每當我嘗試轉到該地址時:
localhost:3000/page/contact_us
我得到一個錯誤。 只有當我輸入年份和月份時,我才不會出錯。 例如,
localhost:3000/page/contact_us/2014/11
作品!
Rails告訴我錯誤是在contact_us.html.erb文件中。 錯誤行是:
<%=contact_us(@month,@year).html_safe%>
contact_us(month,year)函數在幫助程序文件中定義-page_helper.rb
這個想法是通常在上方(在url中)傳遞2個參數,但有時在網址中傳遞1個參數或不傳遞任何參數。 傳遞少於2個參數時出現錯誤。
請幫忙! 我正在使用Rails 4.1.8和Rubymine
您的無效日期錯誤來自日歷方法,您在注釋中包括了指向您的鏈接。 你有:
def calendar(month, year)
current_date = Date.new(year, month, 1)
...
問題是,如果月份或年份為零,則基本上是在執行此操作(在這種情況下,假設兩者均為零):
current_date = Date.new(nil, nil, 1)
只需運行rails console並嘗試:您會收到此錯誤-TypeError:沒有從nil到整數的隱式轉換。
因此,問題不出在您的網址之前。 您可以添加一些這樣的行來修復該錯誤:
def calendar(month, year)
month ||= 1
year ||= 1900
current_date = Date.new(year, month, 1)
...
...但是,那么您必須跟蹤這些日期不正確的事實,以便無論發生在哪里,它們都不會在url中傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.