10

index.html.erb ファイルで、オブジェクト (「リスト」) のタイトルと、通常の「表示」、「編集」、および「破棄」リンクおよび/またはボタンを表示しようとしています。:method => :delete および :confirm => "are you sure?" を使用すると、link_to も button_to も JavaScript 確認ボックスを表示しません。ここに私の index.html.erb があります:

<h2><a href="#" onclick="alert('Hello world!'); return false;">Click Here for a Javascript test</a></h2>   
<table>  
  <tr>
    <th>List Title</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>    
<% @listings.each do |listing| %>
  <tr>
    <td><%= listing.title %></td>
    <td><%= button_to 'Show', listing %></td>
    <td><%= button_to 'Edit', edit_listing_path(listing) %></td>
    <td><%= button_to( 'Destroy', listing, 
                       :confirm => 'Are you sure?', :method => :delete)%> </td>
    <td><%= link_to "Destroy", listing, :confirm => "Are you sure?", :method => :delete %> </td>
  </tr>
<% end %>
</table>

リストの上部にある "Hello World" JS 確認リンクは完全に機能するので、邪魔にならない JavaScript が私のアプリでうまく機能していると確信しています。(必要な javascript_include_tag :defaults と csrf_meta_tag がアプリケーション テンプレートにあることも確認しました。) Rails のドキュメントでは、使用している引数がサポートされていることが確認されています (url、:confirm、:method)。ただし、button_to も link_to も、:confirm で示される JS アラートを生成しません。もう 1 つの奇妙な点は、まったく同じ引数を使用すると、button_to はレコードを削除しますが、link_to は削除しません。

これを修正するために何を調査すべきかについての提案をいただければ幸いです。

ありがとう!

4

4 に答える 4

1

私はちょうど同じ問題に遭遇しました。最新のRailsが利用可能であり、:confirmオプションを引数html_optionsの一部に移動することで解決しました。link_to

<%= link_to (t '.scenarios.open'), { :controller => 'scenarios', :action => 'show', :name => scenario.name }, :confirm => 'really?' %>

確かに、jquery-rails宝石が必要でしたが、それはすでにここにあり、適切にリンクされていました。

于 2013-01-22T20:48:55.183 に答える
1

Rails のUnobtrusive scripting adapter for jQuery (jquery_ujs) がサイトにロードされているかどうかを確認してください。サードパーティの JavaScript について心配する必要はありません。

// app/assets/javascript/application.js    
//= require jquery_ujs
于 2014-01-28T02:16:33.993 に答える
1

私の知る限り、この問題は、メソッドがGET(httpメソッド)以外の場合に問題を引き起こすlink_toオプションが原因で発生するため、正常に機能するbutton_toオプションを使用します

于 2011-04-06T10:40:00.263 に答える