Problema routing

Salve a tutti,
sono nuovo di Rails e sto cercando di convertirmi da altri linguaggi,
purtroppo nonostante molto tempo speso a leggere tutorial, guide e post
alcuni problemi non riesco a risolverli da solo.

Il routing è uno di questi.

Ho creato una semplice struttura simil-twitter per fare esprienza, in
cui ho quindi la gestione utenti (quindi come controllore users) e la
gestione dei post (controllore posts).

Il mio file di route è così strutturato:


resources :users do
resources :posts, :only => [:create, :destroy]
end

Quello che vorrei fare è cercare di inserire un post dalla pagina
personale di un utente.
Ho quindi la mia pagina “users/show.html.erb” con questo codice:


<%= form_for @post, :url => user_posts_path,
:html => { :id => “frmcontact” } do |f| %>

<%= f.text_area :content, :class => "textareatweet", :value => '' %>
<%= f.submit "Share", :class => "submitcomment" %>
<% end %> --------

Ma ho un errore su quel “user_posts_path” nonostante effettuando un rake
route da console sia effettivamente esistente (errore: No route matches
{:action=>“create”, :controller=>“posts”})

Sapete aiutarmi o rimandarmi a qualche guida? Grazie mille!

Piccola aggiunta: ovviamente nel modello user.rb ho impostato “has_many
:posts”, mentre nel modello post.rb ho impostato “belongs_to :user”.
Non so se serva per il problema, ma lo scrivo ugualmente :wink:

Il 23/09/10 15.19, Marco P. ha scritto:

Ma ho un errore su quel “user_posts_path” nonostante effettuando un rake
route da console sia effettivamente esistente (errore: No route matches
{:action=>“create”, :controller=>“posts”})

Premesso che anche io mi intorto parecchio con il routing di rails3,
leggendo il paragrafo 2.7 da
Rails Routing from the Outside In — Ruby on Rails Guides direi che devi usare:

form_for @post, :url => user_posts_path(@user)

spero di non aver detto una bischerata :slight_smile:

Tommaso V. wrote:

Il 23/09/10 15.19, Marco P. ha scritto:

Ma ho un errore su quel “user_posts_path” nonostante effettuando un rake
route da console sia effettivamente esistente (errore: No route matches
{:action=>“create”, :controller=>“posts”})

Premesso che anche io mi intorto parecchio con il routing di rails3,
leggendo il paragrafo 2.7 da
Rails Routing from the Outside In — Ruby on Rails Guides direi che devi usare:

form_for @post, :url => user_posts_path(@user)

spero di non aver detto una bischerata :slight_smile:

Alla grande! Funziona e non solo: mi hai aperto un mondo…
Vedendo il tuo suggerimento ho capito che in realtà avevo grossi
problemi con il routing, leggere tra parentesi il passaggio della
variabile mi ha illuminato e ho risolto anche altri problemi ;).

Grazie, a buon rendere!