2012-02-29 15 views
6

No entiendo lo que está sucediendo aquí. Quiero poner un button_to en mi vista (haml). Si hago esto:Rails button_to: cómo especificar el controlador?

=button_to("New", {:action => "new"}, {}) 

genera la página tiene:

<form action="/cached_input_files/new" class="button_to" method="post"> 
    <div> 
    <input type="submit" value="New" /> 
    <input name="authenticity_token" type="hidden" value="..blah.." /> 
    </div> 
</form> 

lo cual está bien, pero necesito para hacer frente a un controlador diferente. Pero si intento para especificar el controlador:

=button_to("New", {:action => "new", :controller => "editor"}, {}) 

me sale:

<form action="/assets?action=new&controller=editor" class="button_to" method="post"> 
    <div> 
    <input type="submit" value="New" /> 
    ... 

lo esperado El action ser "/editor/new", y no tengo ni idea de por qué no es, ni cómo especificar correctamente el controlador al que quiero dirigir.

Estoy usando Rails 3.2.1.

Respuesta

6

Usted no quiere incluir las opciones en su propio hachís, creo que esto es confuso el intérprete.

=button_to("New", :action => "new", :controller => "editor") 

debe hacer lo que desee.

+0

Hmm, OK que funciona. ¡Gracias! Sin embargo, estoy confundido porque pensé que estaba siguiendo la documentación que muestra 'button_to' con tres parámetros: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to –

+0

Sí , No sé por qué la documentación para link_to y button_to son diferentes a este respecto. ¡Solo voto/acepto mi respuesta, por favor! ¡Gracias! – TheDelChop

+0

"Attribute 'controller' no permitido en la entrada del elemento en este punto" es el error de validación HTML5 que creará, ya que su entrada será algo así como '' en lugar de simplemente contiene 'type =" submit "' y tal vez Value y Class, etc., dependiendo de la ruta proporcionada por la etiqueta de formulario padre. La otra respuesta dará '

' – xxjjnn

5

Trate

=button_to("New", new_editor_path, :method => :get) 
+0

Esta respuesta se valida correctamente en HTML5 =) – xxjjnn

Cuestiones relacionadas