我似乎无法设置自定义URL。所有的RESTful路线工作正常,但我不知道如何简单地将/:unique_url
添加到我在模型中创建的现有路线(一个简单的4个字符的随机字符串),并将作为排序的“固定链接”。无法在Ruby on Rails 3.1中创建自定义路由
的routes.rb
resources :treks
match ':unique_url' => 'treks#mobile'
控制器
.
.
def mobile
@trek = trek.find(params[:id])
end
这是因为我试图确定在现有资源的自定义操作?我可以不使用资源在同一个控制器上创建自定义方法吗?
顺便说一句,当我改变routes.rb
到match 'treks/:id/:unique_url' => treks#mobile
它工作正常,但我只是想的URL仅仅是/:unique_url
更新好像find_by_[parameter]
是要走的路...
我一直在玩的控制台,我似乎无法得到任何方法挺身而出......我可以运行Trek.last.fullname
例如,但不能运行@trek = Trek.last
......然后打电话...例如,。任何线索为什么?我认为这是我的问题。
你'mobile'方法使用'PARAMS [:编号]',但你不你的路线里有':id'。你需要在你的模型中创建一个'find_by_unique_url'方法(如果你还没有),并在你的'mobile'方法中使用它。 –
感谢马克,我在哪里创建此方法? – pruett
如果你有'unique_url'字段,那么你已经有了。在Rails控制台中,您可以执行'Trek.find_by_unique_url(url)',其中'url'与unique_url匹配,您将看到一个结果。 –