错误消息未显示

时间:2013-06-25 19:07:19

标签: ruby ruby-on-rails-3

由于某种原因,我的验证错误消息未显示在窗口上。它与twitter-bootstrap有什么关系吗?我记得看过一些视频教程,但不幸的是现在找不到它。

_形成部分记录

<%= form_for [@estate,@record] do |f| %>
      <% if @record.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(@record.errors.count, "error") %> prohibited this record from being saved:</h2>

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

我的记录模型

validates :E1, presence: true
      validates :E2, presence: true
      validates :E3, presence: true
      validates :E4, presence: true
      validates :R1, presence: true
      validates :R2, presence: true
      validates :R3, presence: true
      validates :R4, presence: true
      validates :Year, presence: true
      validate :validation

控制器的创建和更新方法

def create
        @record = @estate.records.build(params[:record])

        respond_to do |format|
          if @record.save
            format.html { redirect_to [@estate,@record], notice: 'Record was successfully created.' }
            format.json { render json: @record, status: :created, location: @record }
          else
            format.html { render action: "new" }
            format.json { render json: @record.errors, status: :unprocessable_entity }
          end
        end
      end

      # PUT /records/1
      # PUT /records/1.json
      def update
        @record = Record.find(params[:id])

        respond_to do |format|
          if @record.update_attributes(params[:record])
            format.html { redirect_to [@estate,@record], notice: 'Record was successfully updated.' }
            format.json { head :no_content }
          else
            format.html { render action: "edit" }
            format.json { render json: @record.errors, status: :unprocessable_entity }
          end
        end
      end

是否有任何事情要做,该记录属于房地产和房地产有很多记录。就像创建记录时一样,我做“@record = @ estate.records.build(params [:record])” 我尝试使用调试器进行调试,我发现在创建记录时它不会进入else部分,而是直接创建记录而不检查记录模型中的验证。

1 个答案:

答案 0 :(得分:0)

看看这个宝石http://rubygems.org/gems/dynamic_form

它会在您的视图中显示验证错误。然后,您可以删除代码循环实例错误。

此外,与此问题无关,但我建议您使用以下代码重构代码:

在您的控制器中:

respond_to :html, :json

def create
  @record = @estate.records.build(params[:record])
  if @record.save
    # flash[:success]... or whatever
  else
    # flash[:alert]... or whatever
  end

  respond_with @record
end

# same for your update method

要获取您的信息,您可以render action: 'new'

替换render :new