如何使用两个具有关系的表创建选择框?

时间:2013-09-19 15:52:00

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1

我正在尝试创建一个选择框,在我的“政策”视图中显示我的表格Ejecutives中的所有ejecutive_namelast_name,但我需要创建一个搜索按钮,以便从Ejecutives中获取参数我选择了

我的模特有关系:

class Policy < ActiveRecord::Base
  unloadable
  belongs_to :ejecutive
  has_many :policy 
end

class Ejecutive < ActiveRecord::Base
  has_many :policies
end

我的表格与ejecutive_id之间存在关系:

class CreateEjecutives < ActiveRecord::Migration
  def self.up
   create_table :ejecutives do |t|
     t.string :name,:null=>false
     t.string :lastname1,:null=>false
     t.timestamps
   end
  end

  def self.down
    drop_table :ejecutives
  end
end

class CreatePolicies < ActiveRecord::Migration
 def self.up
   create_table :policies do |t|
     t.string :num_policy, :null=>false
     t.integer :ejecutive_id
     t.timestamps
   end
 end

 def self.down
  drop_table :policies
 end
end

这是我的控制者:

class PolicyManagement::PolicyController < ApplicationController
   @ejecutives = Ejecutive.find(:all)
   @policies = Policy.find(:all)
end  

这是我的观点:

 Select Ejecutive:
 %= select_tag 'ejecutives',"<option value=\"\">Seleccione</option>"+options_for_select(@ejecutives.collect {|t| [t.name.to_s+" "+t.lastname1.to_s,t.id]})%>


 Results
  <% @policies.each do |policy| %>
  <p> <%= policy.num_policy%> </p>
  <p> <%= policy.ejecutive.name %> </p>
  <p> <%= policy.ejecutive.last_name %> </p>
  <% end %>

我试过这个

<% form_tag :controller=>"policy_management/policy",:action =>"generate_print_ejecutive_comercial", :method => 'get' do %>
  <p>
  <%= text_field_tag :search,params[:search] %>
  <%= select_tag "Ejecutives", options_from_collection_for_select(@ejecutives, "id", "name") %>
   #Here i in select_tag "ejecutives" need to add searh params..
  <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

我正在使用Rails 2.3.5。

有人知道这个问题吗?我真的很感激帮助。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要一个选定的主持人的政策,你可以通过说Ejecutive.find()。政策来做到这一点。如果需要搜索按钮,请将您的选择框放在表单标签中并发布。在控制器操作中,您将获得所选的ID,您可以使用该ID执行上面提到的行。希望这会有所帮助。