我可能是在做傻事,但是...
app/model/user.rb:
class User < ActiveRecord::Base
has_one :totemconfig/routes.rb:
resources :users do
resource :totem
end应用程序/控制器/totems_CONTRONTER.rb:
class TotemsController < ApplicationController
before_filter do
@user = User.find(params[:user_id])
end
def new
@totem = @user.build_totem
end
endapp/views/totems/new.html.erb:
<%= form_for [@user, @totem] do |f| %>
<% end %>然后,当我导航到/users/123/totem/new时,我得到错误:
ActionView::Template::Error (undefined method `user_totems_path' for #<#<Class:0x007f9d3c843b00>:0x007f9d3bb6dd68>):但是因为我在routes.rb中使用的是resource :totem而不是resources :totems,所以它应该使用的路径助手是user_totem_path。为什么它不尝试使用正确的路径助手呢?
发布于 2013-05-31 13:21:03
我在另一个问题中找到了答案:Ruby on rails: singular resource and form_for
app/models/totem.rb:
class Totem < ActiveRecord::Base
model_name.instance_variable_set :@route_key, 'totem'
belongs_to :user
end(不确定为什么这个问答没有出现在我之前的搜索中...)
发布于 2013-05-31 13:53:35
或者你可以直接使用
form_for @totem, :url => user_totem_path(@user) do |f|发布于 2013-05-31 12:33:39
而不是
resource :totem它应该是
resources :totem https://stackoverflow.com/questions/16849772
复制相似问题