2011-02-11 14 views
6

Estoy tratando de enviar este formulario correctamente. Esto es lo que tengo hasta ahora:Rails, ¿cómo se envía un formulario con un enlace de texto?

<% form_for(:user, :url => update_user_setting_path, :remote => true, :html => {:method => :post, :class => "search_form general_form"}) do |f| %> 

y el botón hace que con este código:

<li><%= link_to raw("<span class='button approve'><span><span>SAVE</span></span></span>"), :action => 'create' %></li> 

estoy usando Crear acción, es esto correcto?

Aquí está la etiqueta de formulario prestados:

<form method="post" data-remote="true" class="search_form general_form" action="/settings/2/update_user" accept-charset="UTF-8"> 

¿Qué me falta? ¡Gracias por tu ayuda!

+0

¿No es esta realmente una pregunta de Rails? –

+0

¿No son Ruby and Rails lo mismo? Empecé la pregunta con Ruby ... –

+3

Ruby on Rails! = Ruby. Tu pregunta es específica de Rails. Estás usando los mismos métodos de Rails, no Ruby. – kyrylo

Respuesta

14

No, no está usando link_to correctamente. Es necesario utilizar una etiqueta de someterse a enviar su formulario, no una etiqueta link_to, por ejemplo:

<% form_for(:user, :url => update_user_setting_path, :remote => true, :html => {:method => :post, :class => "search_form general_form"}) do |f| %> 
    ... 
    <li><%= f.submit "Save" %></li> 

Si desea utilizar un enlace de texto que tendrá que tener Javascript a enviar el formulario. Por ejemplo, si está utilizando jQuery que podría hacer las siguientes:

<%= link_to 'Save', "#", :onclick=>"$('.search_form').submit()" %> 
0

Gracias por las respuestas ... Terminé usando este y funciona muy bien:

   <li><%= link_to raw("<span class='button approve'><span><span>SAVE</span></span></span>"), "index_users", :onclick=>"document.forms['form1'].submit();"%></li> 
+1

Tienes span-itis. Busque remedios apropiados en internet. Considere también algo como esto: '

  • <% = link_to content_tag (: span," SAVE "),: action =>" index_users ",: class =>" a_link approve ": onclick =>" $ ('# form1') .submit(); "%>
  • '. Mejor aún, ni siquiera uses el 'lapso '. – Zabba

    +0

    Intenté su sugerencia de usar: onclick => "$ ('# form1'). Submit(); pero a veces solo funciona en Chrome ... ¿Por qué es eso, ¿lo sabe? –

    2

    me gusta la solución de Pan, pero Prefiero usar la ID del formulario directamente que puede obtener del dom_id (obj). El form_for helper también usa dom_id (obj) para asignar el ID del formulario. De esta forma, no depende de configurar las clases a mano o de someter accidentalmente más de un formulario que comparta la misma clase de CSS. Se ve un poco extraño pero por lo general tienen una costumbre FormBuilder de todos modos, así que sólo añadir un método genérico para encapsular link_to_submit esto:

    <%= link_to 'Save', "#", :onclick => "$('##{dom_id(@user)}').submit()" %> 
    
    1

    No es necesario utilizar un identificador o un selector si tiene jQuery, se simplemente puede hacerlo:

    = link_to 'Save', "#", onclick: "$(this).closest('form').submit()" 
    
    Cuestiones relacionadas