Voy por una tangente aquí por un momento, pero tengan paciencia conmigo.
En primer lugar, recomiendo que utilice RESTful routing ya que esto le da acceso a algunos de los carriles de mejores métodos y operaciones tales como ser capaz de hacer:
form_for(@album) do |f|
y tener que calcular dónde quiere ir basada en el estado #new_record?
de ese objeto.
En segundo lugar, con el nuevo form_for
en su lugar, usted será capaz de secar sus puntos de vista haciendo:
<%= f.text_field :title %>
en lugar de:
<%= text_field :album, :title %>
Y por último, la explicación de por qué una variable se define con un signo @ antes en Rails, también conocido como "variables de instancia":
Cuando define una variable de instancia en Rails, está disponible dentro de ese instancia para toda la solicitud donde la "instancia" es la cadena de métodos ActionController
y ActionView
a la que se llama para hacer todo el renderizado y así sucesivamente. Definirlo como una variable de instancia lo hará disponible en su controlador, cualquier método que llame después de definirlo en el controlador, sus ayudantes, sus vistas y los parciales representados desde sus controladores, ayudantes o vistas.
Básicamente, está disponible para toda la solicitud, pero no es accesible dentro de su modelo.
Otras especificaciones de variables son variables de clase (@@some_useful_thing = 1
) y variables globales ($some_other_useful_thing = 1
) y constantes (ALL_IN_UP_CASE = 1
).
Gracias. Tengo que mirar hacia REST. Trabajando en algunos tutoriales sobre Rails 1.1.6 y aún no hemos llegado a eso. Entonces, con form_for, text_field (: album,: title) no es necesario porque el: nombre del álbum ya se conoce porque f.text_field es parte del formulario al que hace referencia con do | f |. Creo que lo entiendo Gracias. –