在选择框中保存ID时出错

时间:2014-06-16 20:51:22

标签: ruby-on-rails ruby ruby-on-rails-2

我希望从选择框中保存ID,但不保存第一个和第二个选项

这是我的表格:

|Invoice_Cias|
  |id|   |name|
    1     ABC
    2     DEF
    3     GHI
    4     JKL

|Invoices|
  |id|   |invoice_cia_id|
    1         1
    2         2
    3         3
    4         4

这是控制器

class InvoiceController < ApplicationController   

  def new_invoice
     @cias = InvoiceCia.find(:all,:conditions=>['id IN (1,2)'])
     @cias2 = InvoiceCia.find(:all,:conditions=>['id NOT IN (1,2)'])
     @invoice = Invoice.new 
  end

  def create
     @invoice = Invoice.new(params[:invoice])
  end

end

以下是观点:     &lt;%form_for @invoice,:url =&gt; {:控制器=&GT;&#34;发票&#34;,:动作=&GT;&#39;创建&#39;} ,: HTML =&GT; {:ID =&GT;&#34; new_client_form&#34;}            &lt;%= options_for_select(@ cias.collect {| t | [t.name,t.id]})+&#34; OTROS&#34; %GT;     

<p><div id="info1" style="display:none;">
    Others CIAS:
    <%= f.select :invoice_cia_id ,options_for_select(@cias2.collect {|t| [t.name,t.id]} )  %>
   </div>
   <div id="info2" style="display:none;"></div>
</p>                    

这是演示

http://jsfiddle.net/HgqNf/42/

问题是我选择第一个或第二个选项&#34; ABC&#34; = 1或&#34; DEF&#34; = 2总是保存id = 3

当我没有选择第一个和第二个选项并且我想保存id = 1或id = 2

时工作正常

请有人帮助我吗?

1 个答案:

答案 0 :(得分:0)

从您的控制器

   @cias2 = InvoiceCia.find(:all,:conditions=>['id NOT IN (1,2)'])

并提升选择此对象的选项

   <%= f.select :invoice_cia_id ,options_for_select(@cias2.collect {|t| [t.name,t.id]} )  %>

并且此对象不包含id为1或2的元素作为控制器中的条件。