как установить атрибут класса с form_tag в рельсах - PullRequest
34 голосов
/ 01 февраля 2012

У меня есть следующая строка 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 ответ правильный

Ответы [ 5 ]

56 голосов
/ 01 февраля 2012

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

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

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

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

8 голосов
/ 02 августа 2016

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

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

<% end %>
8 голосов
/ 05 декабря 2012

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

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

С Rails 3.0.15

1 голос
/ 02 декабря 2015

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

form_tag your_path, method: :get, id: "your_id", class: "your_class" do 
end
0 голосов
/ 17 апреля 2013

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

<%= form_for @task, html: {:class => "custom_class"} do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...