2

我使用bootstrap-switch并使用bootstrap-switch-rails实现了它。很棒的功能,但是当我使用 ajax 响应来渲染部分时,我遇到了它的持久性问题。

我有一个视图文件:

#### index.html.haml

#partial_id= render 'partial'

呈现部分(包含引导开关切换功能和可点击按钮):

#### _partial.html.haml

.switch{"data-off-label" => "OFF", "data-on-label" => "ON"}
  %input{:checked => "", :type => "checkbox"}

%button.click-here

当点击此处的按钮被点击时,会触发一个 ajax get 请求:

#### some_script.js.coffee

btn = $("#click-here")
btn.off "click"
btn.click (e) ->

  $.ajax
    type: "get"
    dataType: "script"
    url: "some_controller/some_action"

控制器接收请求:

#### some_controller.rb

def some_action
  respond_to do |format|
    format.js
  end
end

并回复:

#### some_action.js.erb

var partial = $("#partial_id");
partial.children().remove();
partial.append('<%= j render("partial") %>');

当部分被重新渲染时,来自 bootstrap-switch 的脚本/样式表不会被加载(或类似的东西),因为没有显示切换功能,而是显示了一个简单的复选框。怎么会这样?

4

1 回答 1

3

从技术上讲,它与您之前附加的项目不同,因为您已在 js.erb 响应中替换了它。您只需要让 javascript 获取新项目。添加$('.switch')['bootstrapSwitch']();some_action.js.erb文件的末尾应该可以解决问题....

于 2013-05-25T05:42:46.447 回答