javascript - 当选择的元素发生变化时,Rails 更新表单的内容

标签 javascript ruby-on-rails ujs

我有一个带有一个选择框和三个文本输入框的表单。当选择框中的选项发生变化时,我想用与所选选项对应的值更新三个文本输入框。这些值是存储在服务器上的模型对象。

我正在使用 Rails 3 并试图让事情不引人注目,但我找不到一种干净的方法来做到这一点。我想出了几个可怕的、困惑的解决方案,但还没有一个干净的解决方案。将这一切联系在一起的好方法是什么?特别是,我在选择元素从服务器请求模型对象时遇到了问题。

这是生成表单的 View :

= form.select :region_id, region_options_for_select(@business_location.region), :prompt => '-- Region --'
= form.text_field :city
= form.text_field :state, :label => 'Province/State'
= form.text_field :country

因此,每当“区域”发生变化时,我都希望填充城市/州/国家/地区字段。请注意,区域也是表单本身的一部分。

最佳答案

在 jQuery 中,像这样的东西可以工作:

$("select").live("change", function(e) {
  e.preventDefault();
  $.ajax({
    url: "/location/" + $(this).val(), //I think, it could be something else
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(data) {
      //you're returning a JSON object, so just iterate through it and bind it to
      //the value attributes of each field
    },
    error: function(xhr,exception,status) {
      //catch any errors here
    }
  });
});

在 Rails 方面,在 LocationsController#show 中:

@location = Location.find(params[:id])
respond_to do |format|
  format.json { render :json => @location.to_json, :status => 200 }
end

这就是它的大致工作方式。将您拥有的任何 Controller /模型名称替换为我编写的名称。

关于javascript - 当选择的元素发生变化时,Rails 更新表单的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331241/

相关文章:

ruby-on-rails - 在 Heroku 上备份和恢复 Redis

ruby-on-rails - 如何在注册期间构 build 计嵌套资源?

ruby-on-rails - 如何路由到robots.txt?

ajax - Rails 3 form_for :remote => true does not submit via AJAX

ruby-on-rails - 渲染的用例是什么(:update)

javascript - Windows 8 Javascript 应用程序 XML 对象

javascript - Gulp 使用 gulp-data 和 gulp-jade 以及目录

javascript - 使用 JavaScript 制作转发到包含日期的 URL 的网页?

jquery - Rails jQuery UJS 回调未触发

javascript - Angularjs 使用 ng-repeat 选择,在选择时将 ng-model 与对象绑定(bind)