Jquery 在ruby代码中使用javascript变量
以我的红宝石形式Jquery 在ruby代码中使用javascript变量,jquery,ruby-on-rails,Jquery,Ruby On Rails,以我的红宝石形式 $('#some_id').change(function(){ var value = $(this).val(); var index = $(this).attr('id').to_i; $('option_value_0').html('<%= escape_javascript render partial: 'color_form', locals: { f: f, index: index, id: value } %>')
$('#some_id').change(function(){
var value = $(this).val();
var index = $(this).attr('id').to_i;
$('option_value_0').html('<%= escape_javascript render partial: 'color_form', locals: { f: f, index: index, id: value } %>')
})
$('some#u id')。更改(函数(){
var值=$(this.val();
var index=$(this.attr('id')。to_i;
$('option\u value\u 0').html(“”)
})
这是javascript部分。它抛出了一个错误,因为
未定义的方法索引和值
我怎样才能解决这个问题?提前谢谢 不能使用JavaScript在HTML页面中注入ruby代码。在将生成的HTML页面发送到浏览器之前,ERB模板在服务器上进行处理。浏览器加载页面后,您可以查看页面的源代码,但不会看到任何
标记,因为它们已由服务器呈现
一旦页面已经在浏览器中,JavaScript就会向页面添加ruby代码,但浏览器不会理解ruby
您可能需要研究支持部分(或模板)的JavaScript框架,例如。您不能使用JavaScript在HTML页面中插入ruby代码。在将生成的HTML页面发送到浏览器之前,ERB模板在服务器上进行处理。浏览器加载页面后,您可以查看页面的源代码,但不会看到任何
标记,因为它们已由服务器呈现
一旦页面已经在浏览器中,JavaScript就会向页面添加ruby代码,但浏览器不会理解ruby
您可能需要研究一个支持部分(或模板)的JavaScript框架,例如。Ce-ne-pas-mable,mon-ami
正如评论中提到的,Ruby是服务器;javascript是客户端。这意味着两件事之一:
- 在运行时生成javascript(不推荐)
- 将ajax/javascript值发送到服务器(通过ajax)
#app/assets/javascripts/application.js
$(document).on("change", "#some_id", function(e) {
$.get("forms/update", {index: $(this).val(), value: $(this).attr('id').to_i});
});
这需要通过适当的路线和管制员行动来解决:
#config/routes.rb
get "color_form", to: "application#color_form"
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
respond_to :js, :html
def color_form
@id = params[:id]
@value = params[:value]
end
end
#app/views/application/color_form.js.erb
$('option_value_0').html('<%=j render partial: 'color_form', locals: { index: @index, id: @value } %>')
不可能,我的朋友
正如评论中提到的,Ruby是服务器;javascript是客户端。这意味着两件事之一:
- 在运行时生成javascript(不推荐)
- 将ajax/javascript值发送到服务器(通过ajax)
#app/assets/javascripts/application.js
$(document).on("change", "#some_id", function(e) {
$.get("forms/update", {index: $(this).val(), value: $(this).attr('id').to_i});
});
这需要通过适当的路线和管制员行动来解决:
#config/routes.rb
get "color_form", to: "application#color_form"
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
respond_to :js, :html
def color_form
@id = params[:id]
@value = params[:value]
end
end
#app/views/application/color_form.js.erb
$('option_value_0').html('<%=j render partial: 'color_form', locals: { index: @index, id: @value } %>')
Ruby在服务器上运行,JS在客户机上运行,因此两者不能直接交互。为了满足您的需要,您需要使用AJAX将JS变量发送到服务器。Ruby在服务器上运行,JS在客户机上运行,因此两者不能直接交互。为了满足您的需求,您需要使用AJAX将JS变量发送到服务器。感谢您的简要描述。真是太好了!您能描述一下关于预加载
颜色表单的一些信息吗?谢谢再说一遍。你说的“预加载”是什么意思?你写的,如果你想要快捷方式,你可以预加载颜色表单部分,然后使用javascript功能更改id或值参数。
。那么我该怎么做呢?哦,对不起,让我给你写一封感谢你的简短描述。真是太好了!您能描述一下关于预加载颜色表单的一些信息吗?谢谢再说一遍。你说的“预加载”是什么意思?你写的,如果你想要快捷方式,你可以预加载颜色表单部分,然后使用javascript功能更改id或值参数。
。那么我该怎么做呢?哦,对不起,让我给你写吧