Ruby on Rails - 表单输入一列并在表单中插入另一列

时间:2015-10-14 08:44:17

标签: ruby-on-rails ruby ruby-on-rails-4 simple-form

关于rails中ruby中的simple_form有一个问题 我想创建一个表单。

我有两个模型:车辆,维修。

 <%= simple_form_for(@repair) do |f| %>
   <div class="form-inputs">
     <%= f.input :vehicle_id, include_blank: true, label: 'Vehicle_no' %>
   </div>
 <% end %>

当我创建修复表单时,我想搜索@ vehicle.no。
当我输入关于车辆号码的关键字如:XXX-1211并且我选择了我需要的那个,那么我可以通过@ vehicle.no获取id以放置车辆编号。

我怎么能实现呢?

谢谢!

> Updated

我有一个输入区域来搜索车辆编号,但该值将是车辆编号。

表格=&gt;车辆号[_____]&lt; =输入vehicle.no,但我想提出关于车辆id的值。

> Updated

This is the form 这是上面的表格。

enter image description here 当我输入车辆编号的部分时,可能会出现一些要选择的车辆编号。(搜索部分)
enter image description here
如果我选择XXX-112,并根据以下数据表,我可以得到值id = 2来提交表格。

          
  1. Vehicle_tables
  2. id no
    1 XXX-111
    2 XXX-112
    3 XXX-332



    100 XXX-222

    我怎样才能实现这个目标? 它使用了一些AJAX函数吗?

    我想使用搜索方法,因为我有很多车辆数据......

    对于清除问题的英语技能感到抱歉.....: - (

2 个答案:

答案 0 :(得分:1)

https://github.com/plataformatec/simple_form#associations

<%= f.association :vehicle, label_method: :no, value_method: :id %>

这当然假设Repair在其模型文件中有has_one :vehicle行。

这段代码将生成一个select标签,其中所有标签都等于:no(我假设格式为XXX-1211),但select元素的值将是vehicle_id

现在,如果您创建一个新修复,它将是一个显示@ vechicle.no的下拉列表,但将@ vechicle.id存储在数据库中。

为了能够搜索,您需要一些额外的JavaScript库,例如select2,将选择框转换为自动完成元素。然后将input_html: {class: "select2"}添加到上面的f.input行以使用它。

答案 1 :(得分:0)

<%= simple_form_for @repair do |f| %>
    <%= f.collection_select :vehicle_id, Vehicle.all, :id, :no %>
    <%= f.submit %>
<% end %>