Простой вопрос формы с Rails 3 - PullRequest
1 голос
/ 27 сентября 2011

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

Вот мой упрощенный код:

def update
  @wizard.assign_attributes(params[:wizard])
  # Get changed attributes

  if @wizard.save
    # Set the success flash with fields modified
    redirect_to @wizard
  else
    @title = "Edition du profil"
    render 'edit'
  end
end

Мнение:

<%= simple_form_for @wizard do |f| %>
    <%= f.input :email %>
    <%= f.input :story %>

    <%= f.submit "Modifier", :class => "btn success small" %>
<% end %>

Модель:

class Wizard < ActiveRecord::Base
  has_secure_password

  attr_accessible :email, :story, :password, :password_confirmation, :password_digest

  serialize :ranks, Array

  validates_presence_of :email, :first_name, :last_name, :gender, :story
  validates_presence_of :password, :password_confirmation, :unless => Proc.new { |w| w.password_digest.present? }

  # Other validations here

  has_one :subject, :foreign_key => "teacher_id"

  ROLES = %w[teacher]

  scope :with_role, lambda { |role| {:conditions => "roles_bitmask & #{2**ROLES.index(role.to_s)} > 0"} }

  # Other functions here
end

У кого-нибудь есть идея?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

Вероятно, это связано с тем, как вы перезаписали AR.Я помню, что у какого-то плагина возникли проблемы с assign_attributes.Тем временем вы можете попробовать:

@wizard.assign_attributes(params[:wizard], :without_protection => true)

Если это сработает, это как минимум сузит проблему до массового назначения.

0 голосов
/ 27 сентября 2011

вы, возможно, пропустили эту часть в редактировании / новом представлении. Где @wizard - это ваше имя модели. Запишите этот кусок кода в форме тега.

<% if @wizard.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@wizard.errors.count, "error") %> prohibited this task from being saved:</h2>

          <ul>
            <% @wizard.errors.full_messages.each do |msg| %>
                <li><%= msg %></li>
            <% end %>
          </ul>
        </div>
    <% end %>
...