2010-08-25 4 views
0

J'ai un problème avec la méthode form_for dans Rails. Il se comporte étrangement.form_for me donne la mauvaise url pour path_prefixes

J'ai un itinéraire avec un préfixe de chemin, quelque chose comme:

map.resources :beers, :path_prefix => '/:brewery' 

Et je forme comme celui-ci (@ beer.brewery est une chaîne, juste le nom de la brasserie):

<% form_for @beer, :url => { :brewery => @beer.brewery } do |form| 
--some fields 
<% end %> 

Il va définir l'action du formulaire à ceci pour un nouvel enregistrement.

/brewery_name/beers/new 

et ceci pour un enregistrement existant.

/brewery_name/beers/1/edit 

Quelqu'un sait pourquoi cela se produit ou comment le réparer?

--edit--

En ce moment je suis en train de résoudre ce comme celui-ci (pour un nouveau record):

<% form_for @beer, :url => beers_path(@beer.brewery) do |form| %> 

et (pour un enregistrement modifié)

<% form_for @beer, :url => beer_path(@beer.brewery, @beer) do |form| %> 

Mais Je veux le faire de la même manière pour les nouveaux et éditer, si c'est possible.

Acclamations, Thijs.

Répondre

0

Je suppose que vous voulez que cela se passe à la bière d'une brasserie. Dans ce cas:

<% form_for [@beer.brewery, @beer] do |f| %> 
    -- some fields 
<% end %> 

En fournissant un tableau comme premier argument à form_for il va générer une ressource imbriquée.

+0

Non, ce n'est pas le cas. La partie brasserie est pour le préfixe, pas pour une ressource imbriquée. –

Questions connexes