Запутался в Ruby on Rails REST Routing - PullRequest
0 голосов
/ 07 декабря 2010

Я действительно запутался в REST-маршрутизации Ruby on Rails. Несмотря на то, что я указал, что после успеха он должен перейти к действию подтверждения, но перейти к действию show и передать идентификатор = подтверждение.

 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

Я получаю следующую ошибку:

ActiveRecord :: RecordNotFound в ArticlesController # show

Не удалось найти статью с идентификатором = подтвердить Rails.root: / Проекты / highoncoding

Трассировка приложений | Framework Trace | Полная трассировка app / controllers / article_controller.rb: 31: в `show '

ОБНОВЛЕНИЕ 1:

Вот мой файл Route.rb:

 resources :articles

  get "articles/confirm"

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010
# 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
1 голос
/ 07 декабря 2010

вам нужно добавить маршрут, чтобы он выглядел как

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

вам нужно иметь: id там, или он будет считать, что Подтверждение является идентификатором, поэтому вы видите идентификатор ошибки = подтверждение. убедитесь также, что это первый маршрут. (по крайней мере, до ресурсов для контроллера статей.

1 голос
/ 07 декабря 2010

Возможно, вам следует добавить маршрут подтверждения непосредственно в файл маршрутов.

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

resources работает только для создания / обновления / уничтожения / и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...