Подтвердить что ты не робот

Как добавить сообщение подтверждения с помощью link_to Ruby on rails

Я хотел добавить сообщение подтверждения в функцию link_to с Ruby.

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

Любые идеи, почему это не работает?

4b9b3361

Ответ 1

Сначала вы должны убедиться, что ваш макет имеет jquery_ujs. Лучше всего это сделать, включив его в основное приложение application.js:

//= require jquery_ujs

Убедитесь, что вы включили application.js в свой макет:

= javascript_include_tag :application

Пока в режиме разработки просмотрите исходный HTML-код и проверьте jquery_ujs.js.

Запустите сервер и убедитесь, что ваш тег ссылки имеет подтверждение данных, например:

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

Если все эти шаги верны, все должно работать!

Примечание: проверьте этот RailsCast http://railscasts.com/episodes/136-jquery-ajax-revised

Ответ 2

Возможно, я ошибаюсь, но вы не укажете контроллер вместе с опцией :action. Вы пробовали следующее? Предполагая, что у вас есть ресурс messages, настроенный на вашем маршруте:

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

РЕДАКТИРОВАТЬ. Выше не рекомендуется. Rails 4.0 теперь принимает приглашение как атрибут данных. См. Документ здесь (Спасибо @Ricky).

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

Ответ 3

Не помню, как это было сделано в Rails 3, но в Rails 4 вы можете просто:

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

Ответ 4

Попробуйте следующее:

= 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

Вы увидите, что есть 3 параметра, когда вы указываете url как опции, такие как {:action => ..., :controller => ...}

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

В ruby, если последний параметр в вызове функции является хешем, вам не нужно обертывать его символами {} (другими словами, вы можете опустить это в случае, если хэш является последним параметром), поэтому код, который вы предоставили, будет интерпретироваться как вызов функции только с двумя параметрами, 'Reset message' string и {:action=>'reset', :confirm=>'Are you sure?'} хешем, а :confirm=>'Are you sure?' будет интерпретироваться как url_option вместо html_option

Ответ 5

<%= 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) передает id который требуется для method: :delete метод method: :delete. Поздняя часть кодов добавляет сообщение с подтверждением.

Ответ 6

Посмотрите на свой javascript_include_tag, и он должен работать нормально:

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

Ответ 8

Во-первых, нам нужно понять, какой пакет Js реагирует на такого рода оповещения в приложении rails. Таким образом, пакет jquery_ujs отвечает за отображение предупреждений в рельсах.

Таким образом, вы должны иметь jquery & jquery_ujs в вашем файле application.js.

//= require jquery
//= require jquery_ujs

Теперь нам нужно подтвердить, что файл application.js включен в требуемый макет или нет. По умолчанию файл макета остается в application.html.erb в папке макетов представлений.

<%= javascript_include_tag 'application' %>

Затем ссылка должна иметь атрибуты data-verify & data-method как

<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?'}

Это должно работать, если все выровнено таким же образом.

Ответ 9

Почему-то не работает этот код только браузер Safari, поэтому я был задействован кнопкой...

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

Ответ 10

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

не забудьте добавить путь между "сбросить сообщение" и данные