Составная форма не работает в Rails
Я пытался создать форму из нескольких частей в Rails в течение последнего дня, что безумие, но я действительно не уверен, как обойти это.
В настоящее время вот код на мой взгляд:
<%= form_for @account, :html => {:multipart => true } do |f| %>
Однако возвращаемый HTML-код выглядит следующим образом:
<form accept-charset="UTF-8" action="/accounts/1" class="edit_account" id="edit_account_1" method="post">
Что касается меня, я не могу понять, почему форма не отображается как составная часть. Эта конкретная форма используется для загрузки изображения с помощью скрепки в AWS, но каждый раз происходит сбой, предположительно потому, что это не составная форма.
Помогите!:) И спасибо.
3 ответа
Привет, согласно Rails API v3.1.3, ваш код должен выглядеть следующим образом:
<%= form_for @account,{},:html => {:multipart => true } do |f| %>
Разница заключается в передаче пустых опций в rails helper, и он будет читать ваши html-параметры.
Спасибо
ОБНОВИТЬ:
Вот код, скопированный из одного из моих проектов: он работает и работает под Rails 3.1
Может быть, вы можете попытаться поставить скобки после "form_for"
<%= form_for(@account,{},:html => { :id=>"account_form",:multipart => true }) do |f| %>
<%= render :partial => "form", :object => f %>
<%= f.submit 'create' %>
<% end %>
Это сработало для меня.
<%= form_for(@account, html: { :multipart => true }) do |f| %>
или же
<%= form_for(@account, html: { :enctype => 'multipart/form-data' }) do |f| %>
Согласно ответу @peterpengnz, предоставляя пустой {}
параметр для form_for
получил ArgumentError:
неверное количество аргументов (3 для 1..2)
Оказывается, я большой идиот, и оригинальная форма работала нормально, кроме...
Я рендерил форму в части, но я обернул часть в стандартную, не состоящую из нескольких частей метку формы, которая перезаписывала многокомпонентную форму и несколько неожиданно не вызвала никаких ошибок.
В любом случае, я глупый, что не заметил этого, но теперь это решено, и загрузка файлов работает отлично.