developer tip

link_to Ruby on Rails로 확인 메시지를 추가하는 방법

optionbox 2021. 1. 9. 09:44
반응형

link_to Ruby on Rails로 확인 메시지를 추가하는 방법


Ruby로 link_to 기능에 확인 메시지를 추가하고 싶었습니다.

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

왜 작동하지 않는지 아이디어가 있습니까?


먼저 레이아웃에 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를 확인 하십시오.


내가 틀렸을 수도 있지만 :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?'}

이것이 Rails 3에서 어떻게 수행되었는지 기억할 수 없지만 Rails 4에서는 간단하게 다음과 같이 할 수 있습니다.

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

이 시도:

= 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를 참조하십시오.

다음과 같은 옵션으로 URL을 제공 할 때 3 개의 매개 변수가 있음을 알 수 있습니다. {:action => ..., :controller => ...}

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

루비에서 함수 호출의 마지막 매개 변수가 해시이면 {}문자로 래핑 할 필요가 없습니다 (즉, 해시가 마지막 매개 변수 인 경우 생략 할 수 있음). 따라서 제공 한 코드는 2 개의 매개 변수 ( 'Reset message'문자열과 {:action=>'reset', :confirm=>'Are you sure?'}해시) 만있는 함수 호출 :confirm=>'Are you sure?'로 해석되며는 url_option대신 a로 해석됩니다 .html_option


<%= 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)전달 하는 단추 링크 입니다. 코드의 뒷부분은 확인 메시지를 추가합니다.idmethod: :delete


javascript_include_tag를 살펴보면 제대로 작동합니다.

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

더 나은 이해를 위해이 railscasts 비디오를보십시오.

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

link_to 도우미에 대한 rails 문서.

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


First, we need to understand what Js package respond to this kind of alerts in rails application. So for this, jquery_ujs package is reponsible for showing the alerts in rails.

So you must have jquery & jquery_ujs in your application.js file.

//= require jquery
//= require jquery_ujs

Now, we need to confirm, that application.js file is included in your required layout or not. By default layout file remains in application.html.erb in layout folder of views.

<%= javascript_include_tag 'application' %>

Next the link should have data-confirm & data-method attributes as

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

In erb, this can be written as,

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

This should work if everything is aligned in same fashion.


Somehow does not work those code only Safari browser So I was involved button...

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

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

remember to add the path, between 'reset message' and data

ReferenceURL : https://stackoverflow.com/questions/16668949/how-to-add-confirm-message-with-link-to-ruby-on-rails

반응형