根据所选选项自动更新文本字段

时间:2014-12-17 15:04:30

标签: ruby-on-rails

Rails版本:4.0.0

大家好,

在我的表单中,我有一个下拉列表中的客户名称。我想在更改选择时更新包含客户端地址的文本框(在单击提交按钮以完成更新之前)。原因是我正在处理来自另一个项目的遗留数据,其中可能有多个具有相同名称但地址不同的客户端条目(例如,拥有多个办事处的大型公司)。

显然(也许?)我不能使用任何客户端脚本解决方案,因为必须从模型中检索新地址 - 除非java / coffee脚本有一种方法可以进行数据库查找我不知道(这很可能,因为我只是对他们有一种肤浅的认识)。

感谢任何提示或指示。

1 个答案:

答案 0 :(得分:1)

假设你有@client:

,你可以这样做

在视图中添加隐藏的div以保存数据属性:

<div id="client_id" style="display:none;" data-client="<%= @client.id %>"></div>

在somefile.js.coffee中:

App ||= {}

App.client =
address = $("#id_of_your_select_field")
client = $("#client_id).data('client')

toggler.on 'change', ( e ) ->
  App.client.getAddress


getAddress: ->
  $ajax(
    type: 'post'
    url: "/get_address"
    client_id: client
    success: ( data, status, xhr ) ->
    # you could parse JSON here if you want, or keep reading and leave this blank
  )

在routes.rb

post '/get_address/:client_id', to: 'clients#return_address'

在clients_controller.rb

def return_address
  @client = Client.find(params[:client_id])
  respond_to do |format|
    format.js
  end
end

并在views / clients / return_address.js中执行:

var clientAddress = $("#the_civ_with_the_address");
clientAddress.html( "<%= j render( :partial => 'clients/address', :locals => { :client => @client } ) %>" );

然后使用app / views / clients / _address.html.erb

中的客户信息进行部分分析