Почему мое веб-приложение Rails вызывает неправильное действие? - PullRequest
1 голос
/ 21 октября 2010

Я погружаюсь в Ruby on Rails и испытываю странную ошибку, используя Rails 3.0.1 и Ruby 1.8.7. Используя сгенерированный код скаффолда, мое действие «Показать» вызывается, когда я ожидаю, что будет вызвано мое действие «Уничтожить». Вот код ...

routes.rb

webappdotcom::Application.routes.draw do
  resources :projects
  root :to => "home#index"
end

index.html.erb

<td><%= link_to 'Destroy', project, :confirm => 'Are you sure?', :method => :delete %></td>

фактический HTML-код, отображаемый в браузере

<td><a href="/projects/12" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a></td>

вывод сервера при нажатии на ссылку «Уничтожить»

Started GET "/projects/12" for 127.0.0.1 at Wed Oct 20 23:39:37 -0500 2010
  Processing by ProjectsController#show as HTML
  Parameters: {"id"=>"12"}
  Project Load (0.1ms)  SELECT "projects".* FROM "projects" WHERE ("projects"."id" = 12) LIMIT 1
Rendered projects/show.html.erb within layouts/application (9.0ms)
Completed 200 OK in 77ms (Views: 13.3ms | ActiveRecord: 0.1ms)

Вы видите, что вызывается действие "ProjectsController # show", но я хочу, чтобы вызывалось действие "Destroy". Кроме того, я заметил, что браузер не отображает подтверждающее сообщение «Вы уверены?» или. Есть идеи, что может быть причиной этого или чего мне не хватает?

Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 21 октября 2010

Это потому, что Rails 3 изменил способ использования javascript в формах. Раньше он добавлял метод onclick к ссылке, но это противоречит ненавязчивому javascript. Теперь он просто устанавливает некоторые атрибуты тега и подключается к нему с помощью javascript в другом файле.

Макет этой страницы (который, вероятно, является application.html.erb, если вы его не изменили) должен содержать следующую строку в разделе head:

<%= javascript_include_tag :defaults %>

Если эта строка отсутствует в вашем макете, это проблема. Другой возможной причиной может быть, если вы добавили библиотеку jQuery в свое приложение, не добавляя специфичную для rails библиотеку jQuery. Дайте мне знать, как это работает.

1 голос
/ 21 октября 2010

Это может помочь вам link_to с: method =>: удаление не работает (Rails 3) .Хотя в этой статье вызывается edit.Но решение должно работать и для show.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...