web-dev-qa-db-ja.com

link_to Ruby on railsで確認メッセージを追加する方法

Rubyでlink_to関数に確認メッセージを追加したかった。

= link_to 'Reset message', :action=>'reset' ,:confirm=>'Are you sure?'

それが機能しない理由はありますか?

54
Tini

最初に、レイアウトにjquery_ujsがあることを確認する必要があります。メインapplication.jsに含めることでそれを行うためのベストプラクティス:

//= require jquery_ujs

レイアウトにapplication.jsが含まれていることを確認します。

= javascript_include_tag :application

一方、開発モードでは、ソースhtmlを表示し、jquery_ujs.jsが存在することを確認します。

サーバーを実行し、リンクタグにdata-confirm値があることを確認します。例:

<a href="/articles/1" data-confirm="Are you sure?" data-method="delete">

これらの手順がすべて正しい場合、すべてが機能するはずです!

注:このRailsCastを確認してください http://railscasts.com/episodes/136-jquery-ajax-revised

44
dpaluy

間違っているかもしれませんが、:actionオプションと共にコントローラーを指定していません。以下を試しましたか?ルートにmessagesリソースが設定されていると仮定します:

link_to 'Reset', message_path(@message), :confirm => 'Are you sure?'

[〜#〜] edit [〜#〜]:上記は非推奨です。 Rails 4.0は、プロンプトをデータ属性として受け入れるようになりました。ドキュメントを参照してください here (@Rickyに感謝)。

link_to 'Reset', message_path(@message), :data => {:confirm => 'Are you sure?'}
131
James

Rails 3でこれがどのように行われたか思い出せませんが、Rails 4では簡単にできます:

<%= link_to 'Reset message', { controller: 'your_controller', action: 'reset' }, data: {confirm: 'Are you sure?'} %>
10
Lukasz Muzyka
<%= link_to "Delete this article", article_path(article), method: :delete,
                    data: { confirm: "Are you sure you want to delete the 
                    article?"}, class: "btn btn-xs btn-danger" %>

article_pathがプレフィックスで、(article)method: :deleteメソッドに必要なidを渡すボタンリンク。コードの後半では、確認メッセージが追加されます。

3
Ankit Wadhwana

これを試して:

= link_to 'Reset message', {:action=>'reset'}, :confirm=>'Are you sure?'

またはより明確にする

= link_to('Reset message', {:action=>'reset'}, {:confirm=>'Are you sure?'})

参照 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

{:action => ..., :controller => ...}のようなオプションとしてurlを指定すると、3つのパラメーターがあることがわかります。

link_to(body, url_options = {}, html_options = {})

Rubyでは、関数呼び出しの最後のパラメーターがハッシュの場合、{}文字でラップする必要はありません(言い換えると、ハッシュが最後のパラメーターである場合は省略できます)。 'Reset message'文字列と{:action=>'reset', :confirm=>'Are you sure?'}ハッシュの2つのパラメーターのみを持つ関数呼び出しとして解釈され、:confirm=>'Are you sure?'url_optionではなくhtml_optionとして解釈されます

3
rubyprince

どういうわけか、これらのコードはSafariブラウザーのみで動作しません。

<%= button_to('', delete_path(), method: "delete", data: { confirm: 'Are you sure?', disable_with: 'loading...' }) %>
0

理解を深めるために、このrailscastsビデオをご覧ください。

http://railscasts.com/episodes/205-unobtrusive-javascript

Link_toヘルパーのRailsドキュメント。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

0
Sachin Singh
<%= link_to 'Reset Message', data: {confirm:"Are you sure?"} %>

「メッセージのリセット」とデータの間にパスを追加することを忘れないでください

0
diego

Javascript_include_tagを見てください。正常に動作するはずです。

<%= link_to("Reset message", :method => :reset, :class => 'action', :confirm => 'Are you sure?') %>
0
Sumit Munot

最初に、JsパッケージがRails application。

そのため、application.jsファイルにjqueryとjquery_ujsが必要です。

//= require jquery
//= require jquery_ujs

ここで、application.jsファイルが必要なレイアウトに含まれているかどうかを確認する必要があります。デフォルトでは、レイアウトファイルはビューのレイアウトフォルダーのapplication.html.erbに残ります。

<%= javascript_include_tag 'application' %>

次に、リンクには次のようなデータ確認属性とデータメソッド属性が必要です。

<a href="/message/1/reset" data-method="delete" data-confirm="Are you sure?">

Erbでは、これは次のように書くことができます。

= link_to 'Reset', message_path(@message), data: {method: 'delete', confirm: 'Are you sure?'}

すべてが同じ方法で整列している場合、これは機能するはずです。

0
V K Singh