Sas*_*sha 1 routes ruby-on-rails mongoid ruby-on-rails-3
我知道这有很多问题.我环顾四周,但我似乎没有犯错,我找到了答案.
我的锻炼资源的表单嵌套在用户之下,正在给出错误
undefined method `workouts_path' for #<#<Class:0x007f88939c9e60>:0x007f8891527b20>
Run Code Online (Sandbox Code Playgroud)
那种形式:
= form_for @workout do |f|
... = f.submit
Run Code Online (Sandbox Code Playgroud)
Workouts Controller新动作(产生错误的地方):
def new
@user = User.find(params[:user_id])
@workout = @user.workouts.new
end
Run Code Online (Sandbox Code Playgroud)
锻炼模型以其独特的名字命名.控制器是复数.这是我的路线文件:
resources :users do
resources :workouts
end
Run Code Online (Sandbox Code Playgroud)
相关的佣金路线输出:
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
Run Code Online (Sandbox Code Playgroud)
(也许它应该转到user_workouts_path,但我不知道为什么它不会自动执行.
此外,我正在使用mongo/mongoid,但我不知道为什么这应该有所作为.我让我的控制器放了@workout,它实例化了一个我可以在服务器日志中看到的新对象:
ActionView::Template::Error (undefined method `workouts_path' for #<#<Class:0x007f8893d0a480>: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
#<Workout:0x007f8893da8ce8>
Run Code Online (Sandbox Code Playgroud)
甚至测试过user_instance.workouts.new在控制台中工作,以确保它不是一些奇怪的mongo问题.
想法?
由于锻炼路线嵌套在用户资源下,因此您需要以下格式(IIRC)form_for:
form_for [@user, @workout] do |f|
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |