2013-04-03 26 views
11

Rubyでのコーディングを開始しました。私は使用しているレールより古くなったバージョンのレールを使用しています。私は3.2.12:レールが動作していないことを確認してください。

これは私のコードで使用しています:私が理解から

<%= button_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?' %> 

を、これらは、HTMLやJavaScriptの後、ポップアクションのいずれかに変換され、レールに渡されるシンボル、あります該当する場合はメッセージボックスを開き、オブジェクトを削除します。上記のコードはオブジェクトを破棄しますが、確認ボックスは表示されません。どうしてこれなの?また、私が最初で次のように上記を持っていた:

<%= link_to 'Destroy', product, :method => "delete", :confirm => 'Are you sure?' %> 

確認ボックスは、のlink_toやbutton_toを使用して、どのような状況の下でポップアップされていません。以下は、Chromeのインスペクタを使用して検査したときに表示されるHTMLです。 jqueryとjquery-ujsもロードされているので、ここからどこに行くのかは分かりません。

<input name="_method" type="hidden" value="delete"> 
<input data-confirm="Are you sureeee?" type="submit" value="Destroy"> 
<input name="authenticity_token" type="hidden" value="Q2xicqELHYHtrwarbtPBe5PT2bZgWV5C+JdcReJI8ig="> 

ありがとうございます!

答えて

50

データ属性内にconfirm属性を追加して機能させる必要がありました。私はブートストラップ付きのレール4を使用しています。私はこれがこの問題を抱えている誰かに役立つことを願っています

link_to 'Delete', @rule, method: :delete, data: { confirm: 'Are you sure you want to delete this alert?' } 
+0

うん、これは私のためにそれをした。ありがとう。 – Billy

+0

それはうまくいきます。 – Avishai

+0

Rails 4とFoundationを使用して私のために働いた。ありがとう! –

9

これは、次のしていることを確認し、jQueryのに依存している:あなたの資産/ JavaScriptの/ application.jsファイルにあなたのGemfile

group :assets do 
    gem 'jquery-rails' 
end 

、行の前に//= require_tree .

//= require jquery 
//= require jquery_ujs 
+0

私は両方のタグを参照していますが、それでも確認ボックスは表示されません。 – jamesdlivesinatree

+0

あなたは 'bundle install'してあなたのレールサーバを再起動したと思いますか? – Benj

+0

javascriptが動作しているかどうかをテストするにはどうすればよいですか?私はそうは思わないし、これが問題だと思う。何が原因なのか分かりません。 – jamesdlivesinatree

5

link_toとbutton_toの違いはHTTP動詞です。 link_toはGETリクエストを発行し、button_toはPOSTリクエストを発行します。 RESTfulルーティングでは、deleteアクションはコントローラ/ IDへのへのPOSTリクエストです。 コントローラ/ IDにGETを発行すると、showアクションにディスパッチされます。

AIUI、link_toとGET動詞以外のものは悪い考えです。 1つの右クリックは動詞を保存しません。 2つ目は、ボットがリンクをたどるようにページをクロールして、実際にデータベースを変更するためにログインする必要がある場合でも、deleteアクションを起動させたくないということです。

+1

ありがとうございます。非常に有益で、今より多くの意味があります。しかし、私はまだ取得する方法について興味がある:ポップアップを確認します。これはまだ私のために働いていません。 – jamesdlivesinatree

3

かなり気が気になりませんでしたが、adblockがメッセージボックスをブロックしていました。申し訳ありません。すべてがうまいです、私はちょうどadblockを無効にしました。

+0

面白い:)しかし、あなたがそれを見つけてうれしい:) – Benj

0

私はポップアップブロッカーをChromeで実行しています。私はちょうどhttp://localhost:3000をホワイトリストに入れ、それは私のために働いた。

関連する問題