form_for中未定义的方法_s_path
我知道这有很多问题。 我环顾四周,但我似乎没有犯错误,我找到了答案。
我的锻炼资源的表单嵌套在用户之下,正在给出错误
undefined method `workouts_path' for #<#:0x007f8891527b20>
那种forms:
= form_for @workout do |f| ... = f.submit
Workouts Controller新动作(产生错误的地方):
def new @user = User.find(params[:user_id]) @workout = @user.workouts.new end
锻炼模型以其独特的名字命名。 控制器是复数。 这是我的路线文件:
resources :users do resources :workouts end
以及相关的佣金路线输出:
user_workouts GET /users/:user_id/workouts(.:format) workouts#index POST /users/:user_id/workouts(.:format) workouts#create new_user_workout GET /users/:user_id/workouts/new(.:format) workouts#new edit_user_workout GET /users/:user_id/workouts/:id/edit(.:format) workouts#edit user_workout GET /users/:user_id/workouts/:id(.:format) workouts#show PUT /users/:user_id/workouts/:id(.:format) workouts#update DELETE /users/:user_id/workouts/:id(.:format) workouts#destroy
(也许它应该转到user_workouts_path,但我不知道为什么它不会自动执行。
此外,我正在使用mongo / mongoid,但我不知道为什么这应该有所作为。 我让我的控制器放了@workout,它实例化了一个我可以在服务器日志中看到的新对象:
ActionView::Template::Error (undefined method `workouts_path' for #<#:0x007f8893d12cc0>): 1: = form_for @workout do |f| 2: 3: = f.label :name, "Name (optional)" 4: = f.text_field :name app/views/workouts/_form.html.haml:1:in `_app_views_workouts__form_html_haml___787289985246055156_70112286316300' app/views/workouts/new.html.haml:3:in `_app_views_workouts_new_html_haml___1568138279872555052_70112285908620' Rendered /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.5ms) Rendered /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.9ms) Rendered /Users/username/.rvm/gems/ruby-2.0.0-p195/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (12.4ms) HERE GOES THE #
甚至测试过user_instance.workouts.new在控制台中工作,以确保它不是一些奇怪的mongo问题。
想法?
由于锻炼路线嵌套在用户资源下,因此您需要form_for
格式(IIRC):
form_for [@user, @workout] do |f|
在我的情况下,我的问题是我的嵌套控制器( ExpansionController )具有单数名称,其父( EditionsController )具有复数名称。 我已经将嵌套的控制器名称更改为复数( ExpansionsController ),它的路由和它工作。
- 如何获取Mongoid文档的所有字段名称?
- 使印象派gem适应mongoid
- Rails / Mongoid:在mongoimport之后,父对象无法识别has_many / belongs_to关系的子对象
- Ruby / rails:mongoid with mongo(gem); 一场激烈的冲突? 如何处理不同的版本?
- ruby on rails 5.0.0.2不兼容并与gem mongoid冲突
- mongodb mongoid-rails无法在嵌入文档的散列中增加计数器
- 如何使用rails和mongoid通过“计数”关联来查找记录?
- 基于Mongoid计算字段的查询
- ActiveRecord和Mogoid :: Document:association