我的routes.rb中有两行,如下所示:
resources :locations
get '/locations/:session_series_token/new', to: 'locations#new', as: "new_location"
我想在我的LocationsController中使用create
方法,而且我还想要一个特定的locations#new
路径。
删除resources :locations
行会导致我的#new
表单出错:
undefined method `locations_path' for #<<Class:0x007fa18caeb3b8>:0x007fa18caea8f0>
Extracted source (around line #1):
<%= form_for [@location] do |form| %>
<h2>Class Location</h2>
必须有办法正确地做到这一点!
答案 0 :(得分:0)
我认为,由于您要移除resources: locations
,因此不再有&#34;索引&#34;位置路线(称为locations_path)。运行命令rake routes
,您将看到只剩下new_location_path。
尝试像这样指定路径:
<%= form_for @location, url: new_location_path do |form| %>
答案 1 :(得分:0)
试试这个:
resources :locations, except: [:new]
get '/locations/:session_series_token/new', to: 'locations#new', as: "new_location"
由于resources :locations
为您定义了所有路由,因此您需要明确定义new
路由,以便您可以像上面那样编写。如果您移除了resources :locations
,那么您的create
路由也会被移除,而<%= form_for [@location] do |form| %>
行会搜索locations_path
行为create
。
希望这有帮助。