webentwicklung-frage-antwort-db.com.de

Wie füge ich eine Bestätigungsnachricht mit link_to Ruby auf Schienen hinzu?

Ich wollte eine Bestätigungsnachricht für die Funktion link_to mit Ruby hinzufügen.

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

Irgendwelche Ideen, warum es nicht funktioniert? 

53
Tini

Zuerst sollten Sie sicherstellen, dass Ihr Layout jquery_ujs . Hat. Bestens dazu sollten Sie es in Ihre Hauptdatei application.js einfügen:

//= require jquery_ujs

Stellen Sie sicher, dass Sie application.js in Ihr Layout aufgenommen haben:

= javascript_include_tag :application

Sehen Sie sich im Entwicklungsmodus Ihre Quell-HTML-Datei an und überprüfen Sie, ob jquery_ujs.js vorhanden ist.

Führen Sie Ihren Server aus und stellen Sie sicher, dass Ihr Link-Tag den Wert data-confirm hat. Beispiel:

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

Wenn alle diese Schritte korrekt sind, sollte alles funktionieren!

Hinweis: Checken Sie diese RailsCast http://railscasts.com/episodes/136-jquery-ajax-revised

41
dpaluy

Ich bin möglicherweise falsch, aber Sie geben keinen Controller zusammen mit der Option :action an. Hast du folgendes probiert? Angenommen, Sie haben eine messages-Ressource in Ihrer Route konfiguriert:

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

EDIT: Oben ist veraltet. Rails 4.0 akzeptiert jetzt die Eingabeaufforderung als Datenattribut. Siehe doc hier (Danke, Ricky).

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

Ich kann mich nicht erinnern, wie dies in Rails 3 gemacht wurde, aber in Rails 4 können Sie einfach:

<%= link_to 'Reset message', { controller: 'your_controller', action: 'reset' }, data: {confirm: 'Are you sure?'} %>
10
Lukasz Muzyka

Versuche dies:

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

oder um klarer zu sein

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

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

Sie werden feststellen, dass es 3 Parameter gibt, wenn Sie url als Optionen wie {:action => ..., :controller => ...} angeben.

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

Wenn der letzte Parameter in einem Funktionsaufruf in Ruby ein Hash ist, müssen Sie ihn nicht in {}-Zeichen einhüllen (mit anderen Worten, Sie können diesen Wert weglassen, falls der Hash der letzte Parameter ist), also den von Ihnen angegebenen Code wird als Funktionsaufruf mit nur 2 Parametern interpretiert, 'Reset message' string und {:action=>'reset', :confirm=>'Are you sure?'} hash und der :confirm=>'Are you sure?' wird als url_option anstelle eines html_option interpretiert

3
rubyprince
<%= 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" %>

Eine Schaltflächenverknüpfung, bei der article_path das Präfix ist und (article) die id übergeben, die für die method: :delete-Methode erforderlich ist ..__ Der spätere Teil der Codes fügt eine Bestätigungsmeldung hinzu.

1
Ankit Wadhwana

Irgendwie klappt der Code nicht nur mit dem Safari-Browser Also ich war mit dem Button beschäftigt ... 

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

sehen Sie sich dieses Rails-Video zum besseren Verständnis an.

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

Rails-Dokumentation für link_to-Helfer.

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?"} %>

denken Sie daran, den Pfad zwischen "Nachricht zurücksetzen" und Daten hinzuzufügen

0
diego

Schauen Sie sich Ihren Javascript_include_tag an und es sollte gut funktionieren:

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

Zunächst müssen wir verstehen, welches Js-Paket auf diese Art von Alarmen in der Rails-Anwendung reagiert. Daher ist das Paket jquery_ujs dafür verantwortlich, die Alarme in Rails anzuzeigen.

Sie müssen also jquery & jquery_ujs in Ihrer Datei application.js haben.

//= require jquery
//= require jquery_ujs

Nun müssen wir bestätigen, dass die Datei application.js in Ihrem erforderlichen Layout enthalten ist oder nicht. Standardmäßig verbleibt die Layoutdatei in application.html.erb im Layoutordner der Ansichten.

<%= javascript_include_tag 'application' %>

Als nächstes sollte der Link Datenbestätigungs- & Datenmethodenattribute aufweisen

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

In erb kann dies geschrieben werden als

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

Dies sollte funktionieren, wenn alles gleich ausgerichtet ist.

0
V K Singh