Rails版本:4.0.0
大家好,
在我的表单中,我有一个下拉列表中的客户名称。我想在更改选择时更新包含客户端地址的文本框(在单击提交按钮以完成更新之前)。原因是我正在处理来自另一个项目的遗留数据,其中可能有多个具有相同名称但地址不同的客户端条目(例如,拥有多个办事处的大型公司)。
显然(也许?)我不能使用任何客户端脚本解决方案,因为必须从模型中检索新地址 - 除非java / coffee脚本有一种方法可以进行数据库查找我不知道(这很可能,因为我只是对他们有一种肤浅的认识)。
感谢任何提示或指示。
答案 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
中的客户信息进行部分分析