javascript - Javascript 中的 Ruby 代码

标签 javascript ruby-on-rails ruby

我有一个保存城市 ID 值的 Ruby 表单:

= select_tag 'building[city_id]',
options_for_select(cities.map{|c| [c.name, c.id]})

我正在使用 Javascript 保存该 ID:

var city_id = $('#building_city_id').val();

我的问题是,我还需要一个用于城市名称的 Javascript 变量,我可以使用 Ruby 获取该变量,如下所示:City.find(@building.city.id).name。 我尝试了这段代码,但它不起作用:

var city_name = #{City.find(city_id).name};

我的错误在哪里? (我对 Ruby 很陌生)

最佳答案

它不起作用,因为 Rails 服务器在定义 city_id 之前解析 html.erb View 。

city_id 是客户端浏览器在接收到包含 var city_name = #{City.find(city_id).name} 的 View 后定义的 Javascript 变量。 ;.

您可以执行一个 Ajax 调用,在服务器上执行 City.find(city_id).name 并用响应填充 var city_name。一旦您知道用户已使用一些您可以使用的文本(即 city_id)填充了 input ,您就可以像这样进行调用(将其放在 View 中或单独的 js 文件中):

$.ajax({
  type: "GET",
  url: "/your_ajax_endpoint",
  dataType: 'json',
  data: {'city_id': city_id},
  success: function(data) {
    var city_name = data;
  },
  error: function(data) {
    // Error handling
  }
});

Controller 中的端点将如下所示:

def my_ajax_endpoint
    city_name = City.find(city_id).name
    respond_to do |format|
      format.json { render json: city_name.to_json }
    end
end

关于javascript - Javascript 中的 Ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912009/

相关文章:

javascript - 如何合并具有相同类的任意数量的(动态)表格单元格?

javascript - 将 javascript 值添加到 Ruby Hash 中

ruby-on-rails - 如何在 Ajax 请求处理期间显示动画图标 - Rails 3

ruby-on-rails - 为什么 capybara 找不到表单元素?

javascript - 读取由nodejs中的2个端点定义的文件的一部分

javascript - 似乎无法推送和返回一组对象 sequelize 查询

javascript - 如何在 html 中使用 Handlebars

ruby-on-rails - RAILS 插件 delegate_belongs_to

ruby-on-rails - 国际化文件中的文件格式是什么

ruby - 我在 Sinatra 应用程序中收到 "Heroku push rejected, no Rails or Rack app detected"错误