【发布时间】:2012-04-25 23:32:49
【问题描述】:
我目前在我的第一个 Rails 项目中的目标是有一个按钮,该按钮将使用 @tea 的属性创建一个 @my_tea(显示页面)。这是我得到的错误:
'未定义的方法 `my_teas_path' 用于#
我尝试将表单放在 my_teas/ 和 teas/_add_tea 中的 _new 部分中,两者都给了我同样的错误。无论如何,这是我的代码。 查看:
<%= form_for([@user, @my_tea]) do |f| %>
<%= f.hidden_field :name, :value => @tea.name %>
<%= f.hidden_field :tea_type, :value => @tea.tea_type %>
<%= f.hidden_field :store, :value => @tea.store %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= fields_for [@user, @tea_relationship] do |r| %>
<%= r.hidden_field :tea_id, :value => @tea.id %>
<% end %>
<%= f.submit "Add Tea", class: "btn btn-large btn-primary" %>
<% end %>
my_tea 控制器
def new
@my_tea = MyTea.new
end
def show
@my_tea = MyTea.find(params[:id])
end
def create
@my_tea = MyTea.new(params[:my_tea])
if @my_tea.save
flash[:success] = "Tea added to your teas!"
else
redirect_to user_path
end
end
茶控制器:
def show
@tea = Tea.find(params[:id])
@my_tea = MyTea.new
@tea_relationship = TeaRelationship.new
end
路线
resources :users do
resources :my_teas
end
resources :teas
型号:
class User < ActiveRecord::Base
has_many :my_teas, :dependent => :destroy
has_many :tea_relationships, :dependent => :destroy
class MyTea < ActiveRecord::Base
belongs_to :user
class TeaRelationship < ActiveRecord::Base
belongs_to :user, class_name: "User"
end
茶模型不属于任何东西。
请帮助 rails 社区你我唯一的希望:p
更新 将我的表单更改为此
<%= form_for([@user, @my_tea]) do |f| %>
<%= f.hidden_field :name, :value => @tea.name %>
<%= f.hidden_field :tea_type, :value => @tea.tea_type %>
<%= f.hidden_field :store, :value => @tea.store %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= fields_for @tea_relationship do |r| %>
<%= r.hidden_field :tea_id, :value => @tea.id %>
<% end %>
<%= f.submit "Add Tea", class: "btn btn-large btn-primary" %>
<% end %>
它有效,@my_tea 提交,但 @tea_relationship 无效。
【问题讨论】:
-
您的意思是在您的
form_for中使用@user而不是@users? -
此处显示的代码的哪一行出现错误?
-
第一行有form_for
-
您正在使用
form_for([@user, @my_tea]),但@user未在任何地方定义。 -
感谢您帮助我更新了新表单,尽管现在我的@tea_relationship 没有保存,我将不得不做更多的挖掘工作,除非有人能提供一些说明为什么不是工作。