Частичный шаблон submit_tag - PullRequest
0 голосов
/ 04 июня 2010

Я хотел бы создать поле для входа везде в верхней части моей страницы, поэтому я добавил:

в application.html.erb:

<%= render :partial => 'sessions/new' %>

in ... / views / session / _new.html.erb

<%= form_tag do %>
  <div>
    <label for="name">Email :</label>
    <%= text_field_tag :name, params[:name] %>
    <label for="password">Mot de passe :</label>
    <%= password_field_tag :password, params[:password] %>
  </div>

  <div>
    <%= submit_tag "Connection" %>
  </div>
</fieldset>

Но это работает, только если я нахожусь в контроллере сессий, когда я тестирую его в своем браузере, Я думаю, что:

<%= submit_tag "Connection" %>

относится к его текущему контроллеру (сеансам), поэтому он не работает в объявлениях / индексах для примера, но выполняет свою работу в сеансах / индексах.

Что я могу сделать? Нужно ли указывать контроллер в submit_tag?

Большое спасибо:)

Ответы [ 2 ]

0 голосов
/ 04 июня 2010

Вам нужно указать контроллер, но на form_tag не на submit_tag

например. <%= form_tag :controller => 'sessions', :action => 'new' %>

0 голосов
/ 04 июня 2010

Вы должны указать тегу формы URL-адрес, на который должна быть отправлена ​​форма. Может по умолчанию он подчиняется текущему действию или как? Вы никогда не должны полагаться на значение по умолчанию, каким бы оно ни было.

Читать API http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002551&name=form_tag

Да, и кстати, тег submit - это просто кнопка, она не имеет никакого отношения к тому, почему форма работает или не работает. У новичков в рельсах много путаницы по поводу форм - многие люди не совсем понимают, как работают формы. Прежде чем использовать какие-либо помощники по рельсам, я настоятельно рекомендую сделать вашу форму в чистом HTML. Таким образом, вы поймете, что на самом деле происходит, и помощники по формам будут именно такими, то есть «вещами, которые помогут вам сделать что-то быстрее», а не такими волшебными вещами, которые оставляют вас совершенно невежественными, когда они не делают того вы ожидаете.

...