0

申し訳ありませんが、それが100回ここにあったnoob-questionである場合。「カートに入れる」ボタンがある記事のリストがあります。私はモーダルビューとレールについてよく読んでいますが、それらはすべてlink_to用です。ボタンを押すと、ショッピングカートでモーダルウィンドウが表示されますか? これがボタン付きの私のコードの一部です(form_tagなどはありません。次の場所にあります:

- @articles.each do |art|
  = button_to 'В корзину', line_items_path(ART_ID: art), :id => "to-cart"

クリックすると、コントローラーメソッドが何をするか、どこにもリダイレクトされず、同じページにいる必要があり、モーダルビュー(htmlとjqueryを使用)がショッピングカートのパーシャルで表示される必要があります:

-unless cart.line_items.empty?
  %table.zebra
    %tr
      %th Наименование
      %th Артикул
      %th Производитель
      %th Количество 
      %th Сумма
    = render(cart.line_items)
  %p
    Общая сумма
    = cart.total_price
  %p
    Наименований (количество):
    = cart.total_count
  = button_to 'Очистить корзину', cart, method: :delete, confirm: 'Вы уверены?'
  -if current_user
    = button_to "Оформить заказ", new_order_path, method: :get
  -else
    %p
      Пожалуйста, для оформления заказа войдите в систему:
      %a#cartlogin{:href => "#"} Логин
    %p
      Если у вас нет аккаунта, зарегистрируйтесь:
      = link_to "Регистрация", new_user_path 
-else
  Увы, ваша корзина пуста
4

1 に答える 1

0

必要なことは、jQuery/JavaScript を介して行うことができます。見栄えの良いモーダルを探している場合は、jQuery UI dialogをチェックアウトすることをお勧めします。

このように、最初にイベント ハンドラーをリンクにアタッチする必要があります。次に、event.preventDefault() 行を追加して、デフォルト アクション (リダイレクトの可能性があります) を無効にします。次に、ajax (おそらく JSON 形式) を使用してビュー データを要求し、データと共にモーダルを表示できます。

$("#link").click(function(event) {
  event.preventDefault();

  //do an ajax call here and show modal
});

これらのリンクをチェックすることをお勧めします:

http://api.jquery.com/click/

http://api.jquery.com/event.preventDefault/

http://api.jquery.com/load/

..または、このプラグインをチェックアウトすることもできます。私は自分で試したことはありませんが、非常に使いやすいようです。

https://github.com/kylefox/jquery-modal

于 2012-08-13T17:58:43.160 に答える