【问题标题】:Error message not displaying in Rails 3Rails 3 中未显示错误消息
【发布时间】:2011-01-28 23:56:53
【问题描述】:

我有一个条目模型和一个照片模型,对于每张照片,用户可以提交一个“条目”——只是一些关于照片的文本。在每张照片的展示页面上,我呈现条目的完整表单。在我的entry.rb 文件中,我有以下内容来计算条目的字数:

validate :count_words

def count_words
  body_size = body.to_s.scan(/[\w-]+/).size
  unless body_size < 300
      errors.add(:entry, "Your entry is too long")
  end
end

当我测试一个超过 300 字的条目时,保存失败,我的控制器重定向回原来的页面。两个问题。控制器重定向时未显示第一条错误消息。我用表单渲染了这个(它是由脚手架生成的)。

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

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

这是控制器动作,我怀疑问题出在哪里:

  def create
    @entry = Entry.new(params[:entry])

    respond_to do |format|
      if @entry.save
        format.html { redirect_to(@entry, :notice => 'Your entry was submitted.') }
      else
        format.html { redirect_to :back } 
      end
    end
  end

我不太确定问题出在哪里。无论如何,我计划在表单上实现一些 javascript 以在提交之前进行验证,但我希望将其作为备份。谁能告诉我我做错了什么?

【问题讨论】:

    标签: ruby-on-rails-3 error-handling


    【解决方案1】:

    通常您希望您的else 语句执行format.html { render :edit } 而不是redirect :back

    当您重定向时,错误不会持续存在(因为它们没有保存到数据库或会话中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多