Come newbie Ruby on Rails, capisco che i riferimenti "@" e ":" hanno significati diversi. Ho visto this post in SO, che ha descritto alcune delle differenze.Ruby - Differenza tra: variabile e @variabile
- @ indica una variabile di istanza (ad esempio, @my_selection)
- : indica un alias (ad esempio,: my_selection)
mi sono imbattuto in una situazione in cui ho avuto uno standard Pagina MVC, simile a tutte le altre forme/pagine nella mia webapp.
html.erb snippet
<%= form_for @my_selection do |f| %>
route.rb snippet
resources :my_selections
Quando tento di accedere a questa pagina, ottengo questo errore:
NoMethodError in selections#create
Showing C:/somedir/myapp/app/views/my_selections/index.html.erb where line #16 raised:
undefined method `my_selection_index_path' for #<#<Class:0x1197e5676>:0x25439c3b>
La riga 16 mostra lo snippet di forma n sopra.
Tutti i miei altri moduli/pagine nella stessa app Web sono impostati esattamente nello stesso modo e funzionano correttamente. Tuttavia, una volta modificato il riferimento del modulo erb a : my_selection, questo errore è andato via e la mia pagina si è comportata normalmente.
Domande:
- è la mia comprensione della differenza tra: my_selections e @my_selections corrette?
- Perché passare a: my_selection risolvere il mio errore originale?
Dovrò controllare cosa sta facendo il mio modello, ma apprezzo sicuramente la spiegazione. – JW8