Javascript中的Ruby代码
Ruby code inside Javascript
我有一个保存城市 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
.我尝试了这段代码,但它没有 wotk:
var city_name = #{City.find(city_id).name};
我的错误在哪里?(我对 Ruby 很陌生)
它
不起作用,因为 Rails 服务器在定义city_id
之前解析html.erb
视图。
city_id
是客户端浏览器在收到包含var city_name = #{City.find(city_id).name};
的视图后定义的 Javascript 变量。
您可以执行一个 Ajax 调用,该调用将在服务器上执行City.find(city_id).name
并用响应填充var city_name
。一旦你知道用户已经用一些你可以使用的文本(即city_id)填充了一个input
,你可以像这样进行调用(把它放在视图中或单独的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
}
});
控制器中的终结点如下所示:
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 传递数据。这是从这个RailsCast中获取的示例。
产品/索引.html.erb
<%= content_tag "div", id: "products", data: {products: Product.limit(10)} do %>
Loading products...
<% end %>
app/assets/javascripts/products.js.coffee
jQuery ->
alert $('#products').data('products')
或者你可以使用贡宝石。
相关文章:
- 为什么不't我的ruby代码与javascript文件一起插入
- 带有ruby代码和javascript的链接
- 如何在ruby on rails中保存和发布Webgl中的JS代码结果
- 如何将ruby代码附加到html元素
- 在 Javascript 文件中使用 Ruby/Rails 代码
- 如何使从数据库获取的 Ruby 代码在 JS 中工作
- Heroku 它的调用 JavaScript 代码不在我的 Ruby on Rails 项目中
- 如何将 ruby 代码值添加到 disqus javascript 变量中
- 使用javascript HotRuby.js时,Ruby代码在哪里编译
- 通过 Jquery 触发对 ruby 代码的点击
- Rails 3.1.3:在 JavaScript 之前评估 ruby 代码
- 将 Ruby 数组传递给 Ruby on Rails 中 Haml 视图中的 JavaScript 代码 (jquery
- Javascript中的Ruby代码
- ruby代码中的Javascript变量
- 如何调试我的代码Ruby,Javascript,CSS
- 如何在Ruby嵌入式代码中使用html元素的值
- ruby代码显示为文本,而不是在js.erb文件中执行
- Duck打字:利用Duck打字将Ruby代码翻译成Javascript
- 如何在视图中混合JS和Ruby代码以供以后使用JS
- js文件中的多行Html代码:Ruby on Rails