簡體   English   中英

Rails路由-可選參數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM