jquery - 是否可以直接从 application.js 渲染部分内容

标签 jquery ruby-on-rails

当用户从第一个选择菜单中选择一个选项时,我尝试加载第二个选择菜单。这是我的 application.js 代码:

$(document).ready(function(){
  $('#aidmodel_brand').change(function() {
    $("select option:selected").each(function () {
      $('#modeler').load('shared/model'); 
    });
  });
});

我知道这段代码可以工作,因为我已经用通用 jquery 事件替换了最后一行,并且在选择第一个选择菜单中的选项时在页面上看到了结果。

问题是,当我运行上面的代码时,浏览器对共享/模型执行 GET 请求,但出现 404 错误。我可以通过routes.rb 修复这个问题吗?

另外,我已经尝试过.html('<%= escape_javascript(render(:partial => shared/model)) %>')用单引号和双引号..单引号只会导致 .html('') 中的确切文本打印在我的 #modeler div 中。双引号不执行任何操作。

我已经考虑通过传统方法解决问题,即在我的辅助模型 Controller 内创建定义并在具有相同名称的 View /辅助模型内创建 .js.erb,但我不知道如何触发加载第二个选择菜单没有点击表单提交按钮..我不想要。

很抱歉问了这个冗长的问题,但我昨晚花了几个小时在这个问题上,结果失去了充足的 sleep !谢谢!

更新:

我尝试使用上面的代码创建一个名为 scripto 的 js.erb 部分,并使用 <%= render( :partial => 'shared/scripto', :formats=>[:js] ) %> 调用它。 ...这似乎有效.. java 代码被导入到我的页面中.. 但是,一旦我将任何 ruby​​ 代码添加到像 .html() 这样的部分中,我就会收到丢失部分错误。我应该提到的是,我还尝试添加 :handlers=>[:erb]到部分电话...仍然没有运气。谢谢

更新2:

$(document).ready(function(){
  $('#aidmodel_brand').change(function() {
    $("select option:selected").each(function () {
      $('#modeler').html('<%= escape_javascript(render(:partial => shared/model)) %>'); 
    });
  });
});

更新3

好的,我已经成功地调用了上面的部分,但是在部分名称周围使用了双引号...但是,现在我遇到了一个真正的问题。我想将所选选项的名称传递给部分...到目前为止,我已经弄清楚如何将所选选项分配给 java var:

$("select option:selected").each(function () {
  var brand = ($(this).text());

但是,我必须以 :brand => @brand 的形式将变量传递给局部变量。有没有办法将 var Brand 中的文本分配给 @brand 变量,以便可以将其传递给局部变量?谢谢!

更新4

再次感谢穆罕默德。不幸的是,我没有看到任何从部分内部访问变量的方法。我认为 $(this).text() 必须先转换为@brand 形式的rails 实例变量,然后才能从部分内部访问它。另外,我认为您不能将 java 代码放入 escape_javascript 方法中,因此必须先将变量分配给@brand。

最佳答案

不能,因为js无法理解Ruby代码。只有 rjs 可以。如果您想从 js 调用部分内容,请创建一个 .rjs 文件并使用 <%= escape_javascript(render(:partial => shared/model) 从中调用它。

对于您添加的更新 2: 看起来不错,但请仔细检查这一行 $('#modeler').html('<%= escape_javascript(render(:partial => "shared/model")) %>');双引号中的部分名称。

关于jquery - 是否可以直接从 application.js 渲染部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9456388/

相关文章:

jquery - 通过 JQuery 调用 Web 服务时出现问题

ruby-on-rails - 在初始化程序中设置 cache_store

ruby-on-rails - 每次重新加载ActiveRecord模型时如何运行一段代码

javascript - 如何通过 bootstrap-sass gem 实现 boostrap 模板

jquery - RequireJS 和 Jquery - 一个文件中有多个模板?

javascript - jQuery .click 未被识别

ruby-on-rails - 如何通过 send_file 设置内容长度

ruby-on-rails - rails 4 : Update user status based on another model conditions

jquery - 如何在使用 jquery 表单提交时从 golang 重定向到另一个模板?

javascript - 对全局变量不更新感到困惑