Маршрут присутствует, но не может разрушить объект, почему? - PullRequest
0 голосов
/ 16 февраля 2012

Я не могу уничтожить объект с допустимым маршрутом.Браузер возвращает No route matches [POST] "/blog/topics/3/posts/1".Однако я могу выполнять все другие действия на том же ресурсе.Как должен выглядеть мой контроллер, шаблон, если я могу создать и уничтожить объект из консоли?

Экономьте время - эти маршруты не работают в моей текущей конфигурации:

Вот мой контроллер:

class Blog::PostsController < ApplicationController
  before_filter :fetch_topic, except: [:index]
  before_filter :fetch_post, except: [:create, :new]

  #stuff that works.
  ..
  ..
  ..

  def destroy
   @post.destroy
    respond_to do |format|
     format.html { redirect_to blog_topic_posts_url, notice: 'Post deleted.'}
    end
       #DOES NOT work: redirect_to root_url([:blog, @topic, @post]), notice: 'Post deleted.'
  end

  private  
   def fetch_post
    @post =  @topic.posts.find(params[:id]) 
   end

   def fetch_topic
    @topic = Topic.find(params[:topic_id])
   end

Вот мой шаблон:

   <%= link_to 'Destroy', blog_topic_post_path(@topic, @post), method: :destroy, confirm: 'You Sure About This?' %>

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Я думаю, что ваша ссылка_ может быть неправильной. Глядя на RoR API , параметры link_to должны выглядеть следующим образом: :method => :delete, :confirm => "Are you sure?".

Кроме того, ваш :fetch_post фильтр не работает для действия destroy, поэтому у вас не будет @post или @topic в этом отношении, потому что :fetch_topic также не вызывается.

0 голосов
/ 16 февраля 2012

должно быть method: :delete.

...