2012-05-01 15 views
9

Tengo una forma:rieles y Haml: no puede conseguir una forma de trabajar

%form{:action:method => "post"} 
    %fieldset 
     %label{:for => "title"} Title: 
     %input{:name => "title", :type => "text", :value => ""}/ 
     %label{:for => "notes"} Notes: 
     %input{:name => "notes", :type => "text", :value => ""}/ 
    %a.finish{:href => "/rotas", :method => "post"} Finish! 

Sin embargo, no parece que el enlace a querer trabajar - tal vez me estoy perdiendo algo básico en Haml, o en rieles.

Tengo una: reserva de recursos en mi routes.rb y mi controlador tiene un método def create.

¡Se agradece cualquier ayuda! ¡Gracias!

btw. Genere usando andamios, y parece que se usa la misma forma para editar un modelo y una creación. ¿Cómo sabe si hacer un POST o un PUT?

+0

Nota: He actualizado mi respuesta, pensé que el problema era simple al principio y luego se dio cuenta de que tenía más problemas pasando. – Andrew

Respuesta

10

1) ¿Quieres poner el blanco de la forma en la acción:

%form{ :action => "/rotas", :method => "post" } 

2) ¿Quieres un botón de envío, no un enlace. Prueba esto:

%input{ :type => "submit" } Finish! 

Además, no estoy seguro de por qué usted está poniendo un / después de sus entradas, que no se necesita para nada. No creo que duela, pero no veo razón para incluirlo.

3) Por último, la convención Carriles no es el uso de elementos HAML sino formar ayudantes, que se vería así:

= form_tag '/rotas' do 
    = field_set_tag do 
    = label_tag :title, 'Title:' 
    = text_field_tag :title 
    = label_tag :notes, 'Notes:' 
    = text_field_tag :notes 
    = submit_tag 'Save Changes' 

Una razón para esto es Carriles va a incluir una Authenticity Token campo oculto en el formulario para usted, y normalmente los controladores Rails no aceptarán formularios que se envíen sin este valor de token de autenticidad. Esto es para evitar Cross-Site Request Forgery.

Pruebe esto y vea lo que obtiene.

Consulte FormTagHelper API para referencia.

+0

que no lo hizo - sin embargo, lo hice funcionar de otra manera ... mira mi respuesta – Karan

+0

ah, acabo de ver tu modificación ... – Karan

+0

acabo de hacerlo funcionar - lo he publicado como respuesta - ¿qué haces? ¿contar? – Karan

0

Lo tengo trabajo usando el siguiente código:

= form_tag rotas_path do 
    = label :rota, :name, 'Name' 
    = text_field :rota, 'name' 
    = submit_tag 'Save Changes' 
Cuestiones relacionadas