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

Рельсы 3 - link_to для уничтожения неработающих

Я пытаюсь создать ссылку destroy для моего контроллера пользователей, я также использую devise.

Вот мой код -

Вид

<%= link_to 'Delete User?', child, :confirm => "Are you sure you want to delete #{child.full_name}?", :method => :delete, :class => "user-additional", :style => "font-size:12px;font-weight:normal;" %>

контроллер

def destroy
 if @user = User.find(params[:id])
  @user.destroy
  respond_to do |format| 
    format.html { redirect_to account_index_path } 
    format.xml { head :ok } 
  end
 end
end

Маршруты

devise_for :users 
resources :users, :except => [:new]

Ссылка переводится на localhost: 3000/users/10

При нажатии этой кнопки открывается вместо того, чтобы удалять их.

Любые идеи?

4b9b3361

Ответ 1

Деструктивные действия должны выполняться как представление формы - http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist

используйте button_to (передавая :method => :delete) и соответствующим образом нарисуйте кнопку.

Ответ 2

На самом деле у меня вчера была точно такая же проблема.

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

<%= button_to "delete", your_object, :method=>:delete, :class=>:destroy %>

Он работает (по крайней мере для меня)

Ответ 3

Если вы используете jQuery вместо Prototype, вам, вероятно, не хватает файла javascript.

Вы можете найти подробную информацию о том, как добавить его в свой проект на странице jquery-ujs GitHub или из эпизод 205 Railscasts.

Ответ 4

Думаю, это связано с тем, что в Rails 3 ненавязчивый javascript теперь используется для таких функций, как это (Rails 2 выводит кучу неприятного встроенного javascript для вашего кода, Rails 3 помещает javascript во внешний файл, и использует атрибуты HTML5 data- для взаимодействия с этим.)

Чтобы решить эту проблему, вам нужно включить <%= csrf_meta_tags %> в свой заголовок страницы, чтобы ссылаться на внешний javascript. Он также занимается вопросами XSS.

Некоторые подробности здесь: Удалить ссылки отправляет "Получить" вместо "Удалить" в представлении Rails 3

Ответ 5

Если вы используете jQuery, убедитесь, что у вас есть что-то вроде этого:

<script type="text/javascript">
  // this allows jquery to be called along with scriptaculous and YUI without any conflicts
  // the only difference is all jquery functions should be called with $j instead of $
  // e.g. $jQ('#div_id').stuff instead of $('#div_id').stuff
  var $jQ = jQuery.noConflict();
</script>

Ответ 6

  • следуйте инструкциям в части установки rails/jquery-ujs
  • добавьте <% = javascript_include_tag "приложение" % > в ваш файл макета.

Ответ 7

Если вы не включили jQuery и jquery-ujs в ваше приложение, по умолчанию ссылка link_to по умолчанию с scaffold не работает!

У меня была такая же проблема. Он был решен после включения обоих этих js!

Ответ 9

Работала для меня с подтверждением.

<%= button_to 'Destroy', {action: :destroy, id: version.id},  onclick: 'return confirm("Are you sure?")', method: :delete %>