2013-03-09 36 views
1

为什么我得到这个错误_form的选择内部出价?模型不连接,因为我认为他们应该是

=> undefined method `request_for_proposal' for 
# <ActionView::Helpers::FormBuilder:0x002aaad671c9c8> 

request_for_proposal 的has_many投标
投标belongs_to的 request_for_proposal

==================================================== 
Inside views/bids/_form.html.erb 

    <div class="field"> 
    <%= bid.label :vendor_name %> 
    <%= bid.select :vendor_id, bid.request_for_proposal.vendors.collect { |rfpvi| 
     [rfpvi.friendly_name + " : " + rfpvi.rfp_number, rfpvi.id] } %> 
    </div> 

竞标我需要​​去通过RFP得到 “invited_vendors” 这样我以后可以限制或限制供应商实际上可以提交出价。

class Bid < ActiveRecord::Base 

    attr_accessible :cost, :request_for_proposal_id, :vendor_id 

    belongs_to :request_for_proposal 
    belongs_to :vendor 
------------------------------------------------ 

mysql> desc bids; 
+-------------------------+---------------+------+-----+---------+----------------+ 
| Field     | Type   | Null | Key | Default | Extra   | 
+-------------------------+---------------+------+-----+---------+----------------+ 
| id      | int(11)  | NO | PRI | NULL | auto_increment | 
| cost     | decimal(10,0) | YES |  | NULL |    | 
| request_for_proposal_id | int(11)  | YES | MUL | NULL |    | 
| vendor_id    | int(11)  | YES | MUL | NULL |    | 
| contact_id    | int(11)  | YES | MUL | NULL |    | 
| created_at    | datetime  | NO |  | NULL |    | 
| updated_at    | datetime  | NO |  | NULL |    | 
+-------------------------+---------------+------+-----+---------+----------------+ 

================================================ 
class RequestForProposal < ActiveRecord::Base 

    attr_accessible :rfp_number, :name, :description, :title, 
        :contact_id, :business_owner_id 

    has_many :bids 
    has_many :rfp_vendors 
    has_many :vendors, :through => :rfp_vendors 

    has_and_belongs_to_many :business_owners, :class_name => :Contact, 
          :foreign_key => :business_owner_id 
    has_and_belongs_to_many :evaluators,  :class_name => :Contact, 
          :foreign_key => :evaluator_id 
----------------------------------------------- 

mysql> desc request_for_proposals; 
+----------------------------+--------------+------+-----+---------+----------------+ 
| Field      | Type   | Null | Key | Default | Extra   | 
+----------------------------+--------------+------+-----+---------+----------------+ 
| id       | int(11)  | NO | PRI | NULL | auto_increment | 
| rfp_number     | varchar(255) | NO |  | NULL |    | 
| contact_id     | int(11)  | YES |  | NULL |    | 
| vendor_id     | int(11)  | YES |  | NULL |    | 
| name      | varchar(255) | NO |  | NULL |    | 
| description    | varchar(255) | YES |  | NULL |    | 
| title      | varchar(255) | NO |  | NULL |    | 
| bid_id      | int(11)  | YES |  | NULL |    | 
| business_owner_id   | int(11)  | YES |  | NULL |    | 
| evaluator_id    | int(11)  | YES |  | NULL |    | 
| created_at     | datetime  | NO |  | NULL |    | 
| updated_at     | datetime  | NO |  | NULL |    | 
+----------------------------+--------------+------+-----+---------+----------------+ 

================================================ 
class Vendor < ActiveRecord::Base 

    attr_accessible :friendly_name 

    has_many :rfp_vendors 
    has_many :request_for_proposals, :through => :rfp_vendors 
    has_many :bids 
------------------------------------------------ 

mysql> desc vendors; 
+-------------------------+--------------+------+-----+---------+----------------+ 
| Field     | Type   | Null | Key | Default | Extra   | 
+-------------------------+--------------+------+-----+---------+----------------+ 
| id      | int(11)  | NO | PRI | NULL | auto_increment | 
| friendly_name   | varchar(255) | YES |  | NULL |    | 
| created_at    | datetime  | NO |  | NULL |    | 
| updated_at    | datetime  | NO |  | NULL |    | 
+-------------------------+--------------+------+-----+---------+----------------+ 

================================================ 
================================================ 

mysql> desc bids_contacts; 
+------------+---------+------+-----+---------+-------+ 
| Field  | Type | Null | Key | Default | Extra | 
+------------+---------+------+-----+---------+-------+ 
| bid_id  | int(11) | NO |  | NULL |  | 
| contact_id | int(11) | NO |  | NULL |  | 
+------------+---------+------+-----+---------+-------+ 

mysql> desc bids_vendors; 
+-----------+---------+------+-----+---------+-------+ 
| Field  | Type | Null | Key | Default | Extra | 
+-----------+---------+------+-----+---------+-------+ 
| bid_id | int(11) | NO |  | NULL |  | 
| vendor_id | int(11) | NO |  | NULL |  | 
+-----------+---------+------+-----+---------+-------+ 

mysql> desc rfp_vendors; 
+-------------------------+----------+------+-----+---------+----------------+ 
| Field     | Type  | Null | Key | Default | Extra   | 
+-------------------------+----------+------+-----+---------+----------------+ 
| id      | int(11) | NO | PRI | NULL | auto_increment | 
| vendor_id    | int(11) | YES |  | NULL |    | 
| request_for_proposal_id | int(11) | YES |  | NULL |    | 
| created_at    | datetime | NO |  | NULL |    | 
| updated_at    | datetime | NO |  | NULL |    | 
+-------------------------+----------+------+-----+---------+----------------+ 

??????????????????????????????????????????? ?????????

后,我让过去这个恼人不能“看” request_for_proposals,

我将需要通过达到卖方的:通过=>:rfp_venders。

我有没有细心去担心要联系Vendors.friendly_name?

回答

1

从您显示的irb错误中,您看起来像在表单构建器实例上调用request_for_proposal,而不是ActiveRecord实例本身。

如果您有form_for @my_instance do |f|,那么块内的f是表单构建器实例,与@my_instance不是同一个对象;您应该使用@my_instancef.object转到ActiveRecord实例。

+0

谢谢bloopletech。 我只是把它改为:

<%= bid.label :vendor_name %> <%= bid.select :vendor_id, @bid.request_for_proposal.vendors.collect { |rfpvi| [rfpvi.friendly_name + " : " + rfpvi.rfp_number, rfpvi.id] } %>
但是现在的错误是: 未定义的方法'rfp_number”为#<供应商:0x002aaae01b18d0> – 2013-03-09 00:49:44

+0

EUREKA!我在试图展示的内容上出现错误。这是解决这个无稽之谈的问题。我会记住的。 ______现在我只需要在我的投标表格中找出如何根据我现在知道我可以得到的清单来限制出价选择的供应商! ______另一个挑战! :) _____ 谢谢! – 2013-03-09 00:59:13

+0

很高兴看到它帮助:) – bloopletech 2013-03-09 01:23:04

相关问题