2010-12-06 2 views
0

Ich bin wirklich verwirrt über Ruby Rails Routing. Auch wenn ich nach dem Erfolg angegeben habe, dass es zur Bestätigungsaktion gehen soll, geht es zur show action und übergibt die ID = confirm.Verwirrt über Ruby on Rails REST Routing

def create 

    @article = Article.new(params[:article]) 

    respond_to do |format| 
    if @article.save 
     format.html { redirect_to :action => "confirm" } 
    else 
     format.html { render :action => "new" } 
    end 

    end 

    end 

Der Fehler ich erhalte, ist die folgende:

Active :: RecordNotFound in ArticlesController # zeigen

nicht mit Artikel ID = bestätigen Rails.root finden konnte:/Projekte/highoncoding

Anwendung Trace | Rahmenverfolgung | Voll Trace app/controllers/articles_controller.rb: 31: in `show‘

UPDATE 1:

Hier ist meine Route.rb Datei:

resources :articles 

    get "articles/confirm" 

Antwort

1

Sie benötigen die Route hinzufügen, so sieht es aus wie

match 'articles/confirm/', :controller => 'article', :action => 'confirm' 
resources :articles 

Sie haben müssen: id dort oder es wird das bestätigen denken, ist eine ID, weshalb die Fehler ID sehen = bestätigen. Achte auch darauf, dass dies die erste Route ist. . (Zumindest vor den Ressourcen für den Artikel Controller

+0

Auch nach dem Definieren der Route wie oben erwähnt bekomme ich folgenden Routingfehler Keine Route stimmt überein {: action => "confirm",: controller => "articles"} – azamsharp

+0

Check zu machen Sicher, Sie haben "Artikel" und nicht Artikel, wie @ Jeremy oben. –

+0

Controller muss Artikel, Singular, nicht Plural sein. Außerdem, stellen Sie sicher, Sie haben das: ID-Segment, und dann sollten Sie prob Überlassen Sie die: ID in Ihrem redirect_to –

1

Sie sollten wahrscheinlich die Bestätigung Route hinzufügen direkt in Ihrer Routes-Datei.

match 'articles/confirm' => 'articles#confirm' 

resources arbeiten nur für erstellen/aktualisieren/zerstören/etc.

+0

Ich habe folgende: Ressourcen: Artikel get „Artikel/Bestätigen“ – azamsharp

+0

die nur für die RESTful Aktionen arbeitet Sie sind das Hinzufügen neuer Funktionen (bestätigen.) –

2
# config/routes.rb 
MyApp::Application.routes.draw do 

    resources :articles do 
    member do 
     get 'confirm' 
    end 
    end 

end 

# app/controllers/articles_controller.rb 
class ArticlesController < ApplicationController 

    def create 
    @article = Article.new(params[:article]) 

    respond_to do |format| 
     if @article.save 
     # use a named route here 
     format.html { redirect_to confirm_article_url(@article) } 
     else 
     format.html { render :action => "new" } 
     end 
    end 
    end 

end 
+0

Ich bevorzuge diese mit dem bestätigen 'Mitglied'. – Pasta