aid*_*dan 2 ruby ruby-on-rails ruby-on-rails-3
我可能做了一些愚蠢的事,但......
应用程序/模型/ user.rb:
class User < ActiveRecord::Base
has_one :totem
Run Code Online (Sandbox Code Playgroud)
配置/ routes.rb文件:
resources :users do
resource :totem
end
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/ totems_controller.rb:
class TotemsController < ApplicationController
before_filter do
@user = User.find(params[:user_id])
end
def new
@totem = @user.build_totem
end
end
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/图腾/ new.html.erb:
<%= form_for [@user, @totem] do |f| %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后,当我导航到时/users/123/totem/new,我收到错误:
ActionView::Template::Error (undefined method `user_totems_path' for #<#<Class:0x007f9d3c843b00>:0x007f9d3bb6dd68>):
Run Code Online (Sandbox Code Playgroud)
但是因为我使用resource :totem而不是resources :totems在routes.rb中,它应该使用的路径助手是user_totem_path.为什么不尝试使用正确的路径助手?
在另一个问题中找到了我的答案:Ruby on rails:singular resource和form_for
应用程序/模型/ totem.rb:
class Totem < ActiveRecord::Base
model_name.instance_variable_set :@route_key, 'totem'
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
(不确定为什么这个Q&A没有出现在我之前的搜索中......)