如何在rails 4中创建新的belongs_to关联模型

Posted

技术标签:

【中文标题】如何在rails 4中创建新的belongs_to关联模型【英文标题】:how to create new a belongs_to associate model in rails 4 【发布时间】:2015-03-30 22:23:29 【问题描述】:

我有2个模型,房东和房产,房产属于单一房东,房东有很多房产。

我想在楼主登录的时候建个新楼盘,但是目前正在抛出NoMethodError (undefined method 'landlords_id' for #<Property:0x007fa74060a420>)

我的代码中的任何地方都没有landlords_id,我的头发都快掉光了。

这是我的地主模型

class Landlord < ActiveRecord::Base
  has_many :properties

  devise :database_authenticatable, :registerable,
    :recoverable, :rememberable, :trackable, :validatable,:authentication_keys => [:username]   
end

这是我的房产模型

class Property < ActiveRecord::Base

  belongs_to :landlord
end

这是我的properties_controller.rb

class PropertiesController < ApplicationController
  before_action :authenticate_landlord!
  layout 'dash'

  def create
    @property = current_landlord.properties.build(property_params)
    @landlord = current_landlord

    if @property.save    

      redirect_to :controller=>'invites', :action => 'new' ,:landlord_id => @landlord.slug, :property_id => @property.slug

    else
      flash.now[:error] ="Failed To Add Property, Please Check Your Input"
      render 'new'
    end

  end

结束

错误具体指向第28行,即if @property.save

这让我相信 @property = current_landlord.properties.build(property_params)

遇到了undefined methodlandlords_id' #`

但我什至不知道这是从哪里来的。

我的代码有什么问题?

【问题讨论】:

【参考方案1】:

您在代码中的某些地方使用landlords_id 而不是landlord_id(单数)。第一个搜索位置:views/properties/new.*views/properties/_form.*

【讨论】:

以上是关于如何在rails 4中创建新的belongs_to关联模型的主要内容,如果未能解决你的问题,请参考以下文章

Java:在 Ruby on Rails 应用程序中创建新“产品”的 HTTP Post

如何更新脚手架生成的 MVC + 路由,用于在 Rails 中具有 2 个 belongs_to 关系的嵌套资源

在 ruby​​ on rails 中创建新表

Rails 的belongs_to 和has_many 的同一个模型

以编程方式获取 Rails 4 中的 belongs_to 关联的类

如何使用 CDN 在 bootstrap 4 中创建新断点?