Подтвердить что ты не робот

Как установить атрибут класса с помощью form_tag в рельсах

У меня есть следующая строка haml:

=form_tag :action => 'create', :controller => 'comments', :class => 'comment_form' do

Но html, который получает вывод:

<form accept-charset="UTF-8" action="/comments?class=comment_form" method="post"></form>

Я хочу установить класс. Как это сделать?

< - Обновление →

При этом:

=form_tag ({ :action => 'create', :controller => 'comments' }, { :class => 'comment_form' }) do

Я получаю эту ошибку:

 syntax error, unexpected ',', expecting ')'
...', :controller => 'comments' }, { :class => 'comment_form' }...

< - Второе обновление →

Проблема выше - это пространство между 'form_tag' и '(' @woahdae правильный ответ

4b9b3361

Ответ 1

form_tag принимает два хэша параметров, первый передается url_for, второй передается в конструктор форм.

Итак, вы должны сделать это так:

= form_tag({:action => 'create',...}, {:class => 'comment_form'}) do

в противном случае Rails считает, что все пары ключ/значение для url_for, которые добавят любые ключи, которые он не понимает в качестве параметров запроса.

Ответ 2

Это работает для меня:

form_tag named_route, :method => :put, :class => 'disable_on_submit'

С Rails 3.0.15

Ответ 3

В Rails 5 вы можете сделать следующее:

<%= form_tag(your_named_path, {class: 'form-inline'}) do %>

<% end %>

Ответ 4

Вы можете выполнить следующие действия:

form_tag your_path, method: :get, id: "your_id", class: "your_class" do 
end

Ответ 5

В случае, если вы нашли этот вопрос и на самом деле хотели разрешить присвоение классов для form_for:

<%= form_for @task, html: {:class => "custom_class"} do |f| %>