【问题标题】:Rails: error messages without bracketsRails:不带括号的错误消息
【发布时间】:2012-10-24 13:03:25
【问题描述】:

如何在没有括号和引号的情况下显示 Rails 错误消息?

出现错误消息时,如下所示:

["please fill out domain"]["please fill out email"]

如何删除括号和引号?

型号

validates :domain,
          :presence => { :message => 'please fill out domain'},
          :uniqueness => { :message => 'domain already registered', :case_sensitive => true }
validates :email,
          :presence => { :message => 'please fill out email'},
          :uniqueness => { :message => 'email already registered', :case_sensitive => true }

控制器

我指定了模板的网址(请参阅format.html),因为我使用的是不同的控制器

def create

  respond_to do |format|
    # save form data
    @login = Login.new(params[:login])

    # if validation fails, throw error messages
    if !@login.save
      flash[:error] = @login.errors.to_a if @login.invalid?
    end

    # render landingpage
    format.html { render :template => 'landingpage/index' }
    format.js { render :action => 'create' }

  end

end

create.js.erb

<% if @login.errors.any? %>
  // error

  var error_string = "";
  <% @login.errors.values.each do |msg| %>
    error_string += "<%= msg %>";
  <% end %>

  $("#flash_messages").html(error_string);

<% else %>
 // no error
<% end %>

查看

<div id="flash_messages"></div>

【问题讨论】:

  • 如果您删除了@login.errors.to_a 中的to_a 调用,还有什么问题?
  • 试试@login.errors.messages.each do |msg|
  • @MurifoX:不幸的是,它并没有改变任何东西
  • @HungryCoder:然后我得到:[:domain, ["please fill out domain"]][:email, ["please fill out email"]]
  • 如果它适合你,请检查我的答案

标签: ruby-on-rails


【解决方案1】:

当您遍历完整的错误消息时,您将收到干净的文本

在您的 create.js.erb 中,将迭代编写如下:

@login.errors.full_messages.each do |msg|

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2017-05-17
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多