Синтаксис link_to с rails3 (link_to_remote) и базовый JavaScript не работает в приложении rails3? - PullRequest
3 голосов
/ 17 марта 2010

Мне интересно, не нарушен ли базовый синтаксис link_to в текущем master-файле rails3 или здесь используется какой-то неправильный синтаксис.

= link_to "name", nil, :onlick => "alert('Hello world!');"

на самом деле должен выдавать предупреждение при нажатии. очень просто. не работает на моем проекте rails3! (также без вывода ошибок!) Есть идеи?

для общего синтаксиса link_to я не смог найти пример, где я мог бы объединить link_to_remote с классом подтверждения, remote и html (см. Мою попытку ниже)

= link_to "delete", {:action => "destroy", :remote => true, :method => :delete, :confirm => "#{a.title} wirklich Löschen?" }, :class => "trash"

даже API-интерфейсы rails3 мне здесь не помогают: http://rails3api.s3.amazonaws.com/index.html

помощь!

Ответы [ 6 ]

13 голосов
/ 18 марта 2010

Я полагаю, что ваша проблема в том, что вы настроили ссылку, чтобы показывать предупреждение при его щелчке, а не при нажатии. ;)

Что касается link_to_remote, он изменился с переключением на ненавязчивый JavaScript. Вы можете прочитать об этом здесь: http://blog.solnic.eu/2009/09/08/unobtrusive-javascript-helpers-in-rails-3.html

8 голосов
/ 19 марта 2010

хорошо, похоже, что новые ненавязчивые изменения javascript привели к проблеме. см. следующий пост для получения дополнительной информации, если вы столкнулись с подобными проблемами http://blog.loopedstrange.com/modest-rubyist-archive/rails-3-ujs-and-csrf-meta-tags

 <%= csrf_meta_tag %>

исправил вещи для меня.

3 голосов
/ 22 июля 2010

ноль не работает:

= link_to "name", nil, :onclick => "alert('Hello world!');"
=> <a href="/currentpath", onclick="alert('Hello world!');">name</a>

Вы должны использовать:

= link_to "name", "#", :onclick => "alert('Hello world!');"
=> <a href="#", onclick="alert('Hello world!');">name</a>
1 голос
/ 28 ноября 2010

Комментарий не по теме для ответа выше, поскольку я пока не могу комментировать: (

@ robeastham: Я решил оставить некоторые комментарии, которые могут помочь с некоторыми из проблем, которые вы решили.

У меня возникла проблема «перенаправить ссылку уничтожить на страницу показа вместо страницы индекса» после перехода с ActiveRecord на Mongoid, и я не нашел реального решения (уже удален прототип). Тем не менее, обходной путь, который работает чисто, состоит в том, чтобы явно указать путь перенаправления, используя: location to response_with:

respond_with @themodel, :location => themodels_url

Что касается получения всплывающего подтверждения с помощью кнопки, вы можете сделать:

button_to "Button Name", { :controller => "your/controller", :action => :action_name, :confirm => "Text for the pop-up"}, { :method => :<method name> }

, например

button_to "Click Here", { :controller => "home", :action -> :set_completed, :confirm => "Mark the item complete?" }, { :method => :put }
1 голос
/ 01 сентября 2010

Если ни один из других ответов здесь не работает для вас, возможно, это поможет.

Так что объявления csrf_meta_tag мне было недостаточно, хотя в любом случае его следует добавить в файл макета для Rails 3. У меня получился конфликт с jQuery. Я просто положил это:

<script type="text/javascript">
  jQuery.noConflict();
</script>

после тега rails scripts в моем макете и устранения конфликта между Prototype и jQuery. Привет, я получил диалоговое окно подтверждения удаления.

Этот метод также решил мою первоначальную проблему при использовании link_to, чтобы попытаться удалить запись. При использовании link_to любая команда уничтожения перенаправлялась на страницу показа для записи. Поэтому я перешел к button_to, основываясь на каком-то другом решении, которое я видел, но без подтверждения. Интересно, есть ли еще какие-то проблемы с jQuery и Prototype?

Все это произошло в обновленном приложении Rails 2.3.5, которое, казалось, работало нормально, без необходимости включать Prototype или: defaults в мой файл макета.

На примечании стороны я следовал этим инструкциям:

http://webtech.union.rpi.edu/blog/2010/02/21/jquery-and-rails-3/

попытаться потерять Prototype все вместе для этого проекта и использовать вместо этого подмодуль jQuery git для Rails 3. Следование этим инструкциям не сработало, и я по-прежнему не имел диалогов подтверждения с button_to и страницей показа при использовании link_to. Просто подумал, что упомяну это, чтобы избавить кого-то от попыток попробовать это.

0 голосов
/ 13 марта 2012

Это сработало для меня:

<%= link_to "Recommend", recommend_user_path(@user), :remote => true %>

Убедитесь, что это в вашем views \ layout \ application.html.erb (или эквивалентном):

<%= csrf_meta_tags %>

Обратите внимание, что Rails v3.2.2 использует "теги", а не "тег"

...