2012-05-12 62 views
1

的routes.rbRails的路由 - 在 '未定義的方法'

match 'mybookings/:token' => 'mybookings#test', :as => 'bookit' 
    resources :mybookings 

軌道路線網址幫手結果表明:

bookit /app/mybookings/:token(.:format) mybookings#test 

然後我用一個幫手:

=link_to "by clicking here", bookit_url(@client.token) 

導致在

ActionView::Template::Error 
Error 
undefined method `bookit_url' for #<#<Class:0x007fd2c1ca3488>:0x007fd2c1f96960> 

該幫手有什麼問題?

+0

,你能否告訴我們在''routes.rb'的bookit'行? –

+0

增加了....謝謝 – 99miles

+0

嗯,這對我來說是個謎。如果您在控制檯中嘗試這樣會發生什麼? 'app.bookit_url(0)'另外,這不是你問的,而是越來越多的設計理念,但是你可能會考慮[添加更多的RESTful動作](http://guides.rubyonrails.org/routing.html#添加更多寧靜行動),而不是創建這個自定義路線。另外,哈哈,有沒有一個原因稱爲「mybookings」而不僅僅是「預訂」? –

回答

1

你的代碼工作正常,我對Rails 3.2

這裏的關鍵代碼:

# in routes.rb 
match 'mybookings/:token' => 'mybookings#test', :as => 'bookit' 

# in controller: 
class MybookingsController 
    def test 
    render :text => 'this is bookit action' 
    end 
end 

# in your erb or haml file: 
link_to "by clicking here", bookit_url('this is the token string') 
+3

謝謝!事實證明,問題只是我從Resque發送的一封郵件中調用了這個,所以我必須這樣做Rails.application.routes.url_helpers.bookit_url('12312') – 99miles

+0

我在AlchemyCMS中遇到過這樣的問題。來自'99miles'的答案就像一個魅力!但我不喜歡url_helpers這種奇怪的行爲。 – 18augst

相關問題