Rails / Jquery: проблема интеграции Bootstrap Toggle с использованием remote: true - PullRequest
0 голосов
/ 08 декабря 2018

Я младший разработчик, и я пытаюсь интегрировать Bootstrap Toggle (http://www.bootstraptoggle.com/) в моем проекте. Флажок хорошо отображается и, кажется, работает в БД, но переключатель не переключается правильно. Я просто пытаюсьпереключить логическое значение (is_sent) и обновить статус моей покупки с помощью ajax и удаленного: правда трюк. Вот код:

index.html.erb

      <% @purchases.order("created_at DESC").each do |purchase| %>
      <h2>Command n°<%= purchase.id %></h2>
         <% @orders.where(id: purchase.order_id).each do |order| %>          
      <h3> <strong>Complete Information:</strong> </h3>
      <h4> Command sent ? ? </h4>

    <%= form_for purchase do |f| %>
    <%= f.check_box :is_sent, 'data-toggle' => 'toggle', 'data-onstyle' 
    => "danger", id: 'toggle1', 'data-style' => "slow",
         data: {
        remote: true,
        url: url_for(action: :update, id: purchase.id),
        method: "PATCH"
        }  %>
        <% end %>

    <script src="https://gitcdn.github.io/bootstrap- 
    toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
    <link href="https://gitcdn.github.io/bootstrap- 
    toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet"/>
    <script>
    $(function() {   
        $('toggle1').bootstrapToggle();
      })
    </script>

admin_purchases_controller:

  def update
     @purchase = Purchase.find(params[:id])
     status = !@purchase.is_sent
     @purchase.is_sent = status
     @purchase.save
  end

маршруты:

  namespace :admin do
    resources :purchases, only: [:index, :update] 
  end

Теперь, как вы можете видеть, когда я нажимаю на мой переключатель, значение хорошо сохраняется в базе данных:

 Started PATCH "/admin/purchases/2" for 127.0.0.1 at 2018-12-08 
 16:01:27 +0100
 Processing by Admin::PurchasesController#update as JS
 Parameters: {"id"=>"2"}
 User Load (0.7ms)  SELECT  "users".* FROM "users" WHERE "users"."id" 
 = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
 Purchase Load (2.4ms)  SELECT  "purchases".* FROM "purchases" WHERE 
 "purchases"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
(0.7ms)  BEGIN
User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = 
$1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
SQL (1.8ms)  UPDATE "purchases" SET "is_sent" = $1, "updated_at" = $2 
WHERE "purchases"."id" = $3  [["is_sent", "f"], ["updated_at", "2018- 
12-08 15:01:27.879657"], ["id", 2]]
(0.5ms)  COMMIT
Rendering admin/purchases/update.js.erb
Rendered admin/purchases/update.js.erb (1.0ms)
Completed 200 OK in 203ms (Views: 126.6ms | ActiveRecord: 6.4ms)

Но в первый раз, когда я нажимаю на кнопку, она не переключается. После этого она переключается правильно, но значение часто не хорошее ...

Может быть, мне нужно установить динамический идентификатор, потому что я итерирую, нов этом случае я не знаю, как это сделать ..

Извините за мой плохой английский, я надеюсь, что кто-то может помочь! Заранее спасибо

...