button_to: action => 'destroy' ищет 'show' - PullRequest
       0

button_to: action => 'destroy' ищет 'show'

20 голосов
/ 21 сентября 2010

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

Я создаю приложение rails и пытаюсь получитьbutton_to вызвать уничтожение в другом контроллере.

код, который у меня есть для кнопки:

<%= button_to "delete", :controller => :meals, 
                           :action => 'destroy',
                           :recipe_id => recipe.id,
                           :method => :post >

, когда я нажимаю кнопку удаления, я получаю «Нет совпадений для блюд / 3», который является текущим идентификатором еды.

контроллер уничтожения в блюде выглядит следующим образом

  def destroy
    @meal = Meal.where("current_user.id => ? AND recipe_id => ?", current_user.id, params[:recipe_id]).first
    @meal.destroy

    respond_to do |format|
      format.html { redirect_to :controller => "user" , :action => "show" }
      format.xml  { head :ok }
    end
  end

похоже, что button_to полностью игнорирует действие: и запрашивает шоу, которое не существует и не должно существовать.

Ответы [ 2 ]

41 голосов
/ 21 сентября 2010

А как у вас выглядит часть route.rb? Потому что, если вы используете map.resources, значит для destroy есть тот же путь, что и для show, но :method => :delete (виртуальный глагол, реализованный формой и _method = delete param).

Попробуйте это:

<%= button_to "delete", {:controller => :meals,
      :action => 'destroy', :id => recipe.id }, :method => :delete %>

или если recipe является экземпляром класса Meal, тогда

<%= button_to "delete", @recipe, :method => :delete %>

Следите за фигурными скобками.

11 голосов
/ 19 марта 2015

Я знаю, что уже слишком поздно для ответа, но надеюсь, что он может кому-то помочь (используя Rails 4).

 <%= button_to "delete", meal_path(:id => recipe.id), :method => :delete %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...