【问题标题】:undefined method `my_teas_path' for #<#<Class:0xa8930c8>:0xa578cf8>#<#<Class:0xa8930c8>:0xa578cf8> 的未定义方法“my_teas_path”
【发布时间】: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 没有保存,我将不得不做更多的挖掘工作,除非有人能提供一些说明为什么不是工作。

标签: ruby-on-rails form-for


【解决方案1】:

因此,从事物的外观和一瞥,您似乎正在尝试做一些嵌套形式。看起来你也有一个多对多的关系(tea.rb tea_relationship.rb my_tea.rb)确保你的模型设置正确。

Many to Many

我不知道你为什么要这么做[@user, @my_tea]

Nested Forms

应该更符合

<%= form_for @my_tea, :url => posting_path do |f| %>    
    <%= f.simple_fields_for :teas, @my_tea.teas.build do |x| %>
            ...
    <%end%>
    ...
<%end%>

希望有帮助!

【讨论】:

  • 我更新了帖子。茶模型没有或不属于另一个模型。 MyTeas 和 TeaRelationship 一样属于用户
猜你喜欢
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2016-05-19
  • 2018-04-02
  • 2014-04-28
相关资源
最近更新 更多