2010-01-08 61 views
0

我有字段b_id中的表B的外键到表B.现在我正在试图添加新的表A条目进行查看/控制。在窗体中,我有组合框(通过collection_select),其中列出了表B中的所有元素,这就是我打算在A的创建方法中获得A的新实例的b_id。带外键的表的CRUD

组合框的值是设置为所需B实例的ID。但是,如何将该值设置为ecreate方法中新的A对象的b_id字段?无论我尝试什么,它总是空的,当然,我得到了例外。

回答

0

我不知道我跟着你的问题了,但是那听起来像你可能想直接从PARAMS到新的一通ID对象的创建方法......是这样的:

a = A.create(:b_id => params[:b_id], ...) 

这一切都取决于您在视图中命名组合框的内容。如果你可以粘贴你的视图的片段,那么这将有助于


根据评论更新。

纵观rails docscollection_select,它看起来像你不正确的数据传递到collection_select

+0

是的,这正是我想要的。 Combobox是这样创建的: <%form_for(@opstina)do | f | %> ... <%= collection_select(:okrug,:id,@okrugs,:id,:naziv)%> Opstina的外键okrug_id为Okrug。但我无法获得所选的okrug_id。我试过类似params [:okrug_id]的东西,但它是零 – celicni 2010-01-08 02:17:26

+0

尝试'collection_select(:opstina,:okrug_id,@okrugs,:id,:naziv)'或'f.collection_select(:okrug_id,@okrugs,:id, :naziv)' – 2010-01-08 03:15:12

+0

谢谢!它的工作原理与 f.collection_select(:okrug_id,@okrugs,:ID,:naziv) 问题发生,因为我选择的标签看上去像这样 <选择的id = “okrug_id” NAME = “梁州[ID]”> 它应该看起来像这样 <选择的id = “opstina_okrug_id” NAME = “opstina [okrug_id]”> (错误ID) – celicni 2010-01-08 03:43:43

0

首先第一件事情,你有没有宣称B有许多作为,而A属于你的模型到B ? (编辑:原本是这些颠倒的)

class B < ActiveRecord::Base 
    has_many :as 
end 

class A < ActiveRecord::Base 
    belongs_to :b 
end 
+0

不,我还没有(现在我添加的话) – celicni 2010-01-08 03:01:56

+0

好吧,你不应该如果你的请求中有'params [:b_id]',那么就不需要其他任何东西。 – Ben 2010-01-08 03:05:26