Составная форма не работает в 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)

Оказывается, я большой идиот, и оригинальная форма работала нормально, кроме...

Я рендерил форму в части, но я обернул часть в стандартную, не состоящую из нескольких частей метку формы, которая перезаписывала многокомпонентную форму и несколько неожиданно не вызвала никаких ошибок.

В любом случае, я глупый, что не заметил этого, но теперь это решено, и загрузка файлов работает отлично.

Другие вопросы по тегам