Domanda

Non sono in grado di distruggere un oggetto con un percorso valido. ritorna browser No route matches [POST] "/blog/topics/3/posts/1". Tuttavia posso eseguire tutte le altre azioni sulla stessa risorsa. Come dovrebbe mio controller, modello sguardo dato che posso creare e distruggere l'oggetto dalla console?

Risparmio di tempo-queste vie non funzionano neanche sotto il mio config corrente:

Qui è il mio controller:

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

Qui è il mio modello:

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

Soluzione

Dovrebbe essere method: :delete.

Altri suggerimenti

Credo che la vostra link_to potrebbe essere sbagliato. Guardando sul RoR API le opzioni link_to dovrebbe essere come :method => :delete, :confirm => "Are you sure?".

Inoltre, il filtro :fetch_post non correre per l'azione destroy, in modo da non avere @post o @topic per quella materia, perché :fetch_topic non viene chiamato sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top