Як додати ідентифікатор html до рейок


77

Я використовую Rails 2.2.2, і я хотів би додати ідентифікатор до коду форми html, згенерованого тегом form_tag.

<% form_tag session_path do -%>      
<% end -%>

В даний час виробляє:

<form action="/session" method="post">
</form>

Хотіли б, щоб це дало:

<form id="login_form" action="/session" method="post">
</form>

Апі насправді не якийсь - якої допомоги , і я спробував додати різні комбінації

:html => {:id => 'login_form'}

без удачі.

Відповіді:


101

Для цього <element>_tagви безпосередньо вказуєте атрибути HTML наступним чином:

<% form_tag session_path, :id => 'elm_id', :class => 'elm_class',
                          :style => 'elm_style' do -%>
   ...
<% end -%>

Саме для конструкцій вам потрібно перемістити атрибути HTML всередину карти:<element>_remote_tag:html

<% form_tag form_remote_tag :url => session_path, :html => {
                            :id => 'elm_id', :class => 'elm_class',
                            :style => 'elm_style' } do -%>
   ...
<% end -%>

28

Цей код

form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form")

дайте як результат:

<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post">

Але, якщо ви використовуєте цю структуру

form_tag({:controller => "people", :action => "search"}, :method => "get", :class => "nifty_form")

ви отримаєте як результат

<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">

і це саме те, що ви хочете


Ви думаєте? Також - відповіді лише за кодом не найкращі - спробуйте трохи пояснити відповідь.
random_user_name

1
Це не проблема. І так, я думаю :) Якщо ви хочете додати клас або метод або що-небудь інше для формування тегу, вам просто потрібно упакувати контролер і дію, як це {: controller => "people",: action => "search"}, тоді всі ваші параметри після цієї структури будуть працювати, якщо вони є релевантними
Kirill Warp

Це мені справді допомогло. Дякую @Kirill Warp
Роберт Тревіс Пірс

3
<% form_tag 'session_path', :id => 'asdf' do -%>      
<% end -%>

Генерує

   <form action="session_path" id="asdf" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="ed5c62c836d9ba47bb6f74b60e70280924f49b06" /></div>
   </form>

0

У моєму випадку мені потрібно ставити параметри HTML в {}фактично додати idдо form_tag, як це:

<%= form_tag(some_update_path(@some_record), { method: :put, id: "some-id" }) do <% end %>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.