Question

Je suis tout à fait nouveau pour Rails3, je essentiellement créé un échafaudage subscribers, je veux que mon application pour répondre aux actions de new et create.

Donc config/routes.rb je définissais:

resources :subscribers, :only => [:new, :create]

Ce qui fonctionne de cette façon

GET /subscribers => subscribers#new
POST /subscribers => subscribers#create

Maintenant, je veux que mon application pour exposer les ressources abonnés à / (root) au lieu de /subscribers, voici donc ce que je faisais:

match '/' => "subscribers#new"
match '/' => "subscribers#create"
match '/' => "subscribers#thankyou"
resources :subscribers, :only => [:new, :create]

Ce qui fonctionne en quelque sorte, mais probablement pas la chose plus sec: voici les questions que je:

  1. Lorsque vous revenez à la forme après un problème sur créer le navigateur affiche l'URL de /subscribers au lieu de simplement /, la forme est créée en utilisant la méthode d'aide de form_for(@subscriber), de sorte que l'assistant path doit être en quelque sorte pas affecté par la route
  2. Idéalement, je ne veux même pas l'application pour répondre à une demande /subscribers
  3. j'ai remarqué un bug étrange, lorsque l'affichage de la forme tout en étant déconnecté (de /, puis faire un rafraîchissement lorsque la connexion est de retour (navigateur demander resoumettre => OK), les plantages d'applications Rails (je n'ai pas pile d'erreur mais que cela était sur la production), pourquoi?

En outre, j'ai essayé d'installer la route de cette façon:

resources :subscribers, :only => [:new, :create] do
  collection do
    post '/' => :create
    get '/' => :new
  end
end

Ce qui est probablement Sécheuse, mais il ne fixe pas de ces questions.

Je suis sûr que cela est quelque chose de très simple, s'il vous plaît aider!

Était-ce utile?

La solution

Merci pour vos réponses, il m'a aidé à trouver la solution exacte à ma question:

resources :subscribers, :only => [:new, :create], :path => '', :path_names => {:new => ''}

testé et fonctionnel sur Rails 3:)

Autres conseils

Vous pouvez faire

resources :subscribers, :path => ''

et assurez-vous que GET / est servi par votre modèle de racine, par exemple en ajoutant à ce SubscribersController:

  def index
    render 'welcome/index'
  end

J'ai expérimenté avec l'aide d'une déclaration de match "/" pour remplacer l'action index des ressources et la carte à un autre contrôleur à la place, mais apparemment une déclaration de resources est toujours complètement les routes de la substitution déclarées manuellement.

Pour le numéro 2 dans la liste, supprimer cette ligne, et réécrire toutes les méthodes de _PATH ou _url dans votre erb:

resources :subscribers, :only => [:new, :create]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top