Rails, как вы отправляете форму с текстовой ссылкой? - PullRequest
6 голосов
/ 11 февраля 2011

Я пытаюсь, чтобы эта форма была отправлена ​​правильно. Вот что у меня есть:

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

и кнопка отображается с этим кодом:

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

Я использую действие создать, это правильно?

Вот представленный тег формы:

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

Что мне не хватает? Спасибо за вашу помощь!

Ответы [ 4 ]

14 голосов
/ 11 февраля 2011

Нет, вы не используете link_to правильно. Для отправки формы необходимо использовать тег отправки, а не тег link_to, например:

<% 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>

Если вы хотите использовать текстовую ссылку, вам нужно будет javascript отправить форму. Например, если вы используете jQuery, вы можете сделать следующее:

<%= link_to 'Save', "#", :onclick=>"$('.search_form').submit()" %>
2 голосов
/ 11 февраля 2011

Мне нравится решение Пана, но я предпочитаю использовать идентификатор формы, который вы можете получить непосредственно из dom_id (obj).Помощник form_for также использует dom_id (obj) для назначения идентификатора формы.Таким образом, вы не зависите от установки классов вручную или случайно отправите несколько форм, которые используют один и тот же класс CSS.Это выглядит немного странно, но у меня обычно есть собственный FormBuilder, так что я просто добавляю универсальный метод link_to_submit для инкапсуляции этого:

1 голос
/ 10 октября 2017

Вам не нужно использовать идентификатор или селектор, если у вас есть jquery, вы можете просто сделать:

= link_to 'Save', "#", onclick: "$(this).closest('form').submit()"
0 голосов
/ 11 февраля 2011

Спасибо за ответы ... Я в конечном итоге использовал это, и он прекрасно работает:

              <li><%= link_to raw("<span class='button approve'><span><span>SAVE</span></span></span>"), "index_users", :onclick=>"document.forms['form1'].submit();"%></li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...