Как установить атрибут класса с помощью 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 правильный ответ
Ответы
Ответ 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| %>