Подтвердить что ты не робот

Рельсы 4 бутстрап 3 ajax modal

Я занят обучением Rails 4, и я хотел бы отображать всплывающее окно bootstrap, когда пользователь нажимает на ссылку, когда модальный файл открывается, ему нужно показать информацию, относящуюся к этой конкретной записи. Heres, что я сделал до сих пор, который просто не показывает фактическое модальное всплывающее окно, но передает правильные параметры.

Страница

index.html.erb имеет:

<%= link_to "view", work_path(w), remote: true, :"data-toggle" => 'modal', :"data-target" => '#myModal' %>

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>

У меня также есть works/_modal.html.erb:

<div class="modal-dialog">
<div class="modal-content">
  <div class="modal-header">
   <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;          </button>
    <h4 class="modal-title" id="myModalLabel"></h4>
  </div>
  <div class="modal-body">
  <%= @work.name %>
  </div>
  <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    <button type="button" class="btn btn-primary">Save changes</button>
  </div>
</div>
</div>

также работает контроллер:

    def show
    @work = Work.find(params[:id])
    if request.xhr?
    respond_to do |format|
        format.html {render :partial => 'modal'}
        format.json {head :ok}
    end
end
end

и, наконец, works/show.js.erb:

$("#myModal").html("<%= escape_javascript(render 'modal') %>");

Надеюсь, что мне не хватает чего-то легкого здесь. в консоли я вижу следующее сообщение, поэтому я знаю, что он возвращает правильную информацию, но, к сожалению, он не показывает модальный.:

Started GET "/works/8" for 127.0.0.1 at 2014-03-03 09:31:12 +0000
Processing by WorksController#show as JS
Parameters: {"id"=>"8"}
Work Load (0.2ms)  SELECT  "works".* FROM "works"  WHERE "works"."id" = ? LIMIT 1  [["id", 8]]
Rendered works/_modal.html.erb (4.9ms)
Completed 200 OK in 8ms (Views: 6.3ms | ActiveRecord: 0.2ms)

Любая помощь по этому поводу очень ценится.

4b9b3361

Ответ 1

Попробуйте по-другому. Таким образом, мы покажем модальное всплывающее окно, используя явную команду javascript.

В index.html.erb

<%= link_to "view", work_path(w), remote: true, class: 'static-popup-link'%>

<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">Loading...</div>

В application.js

$(document).ready(function() {

  var clickOnPopupLink = function(){
    $('body').on('click', '.static-popup-link', function(){
      $('#myModal').modal('show');
    });
  }

  clickOnPopupLink();

});

В контроллере

def show
  @work = Work.find(params[:id])
end

В show.js.erb

$('#myModal').html("<%= j render("/works/modal")%>")

Ответ 2

Вам также нужно показать модальный, добавьте $('#myModal').modal('show') в show.js.erb

$("#myModal").html("<%= escape_javascript(render 'modal') %>");
$('#myModal').modal('show')