【问题标题】:How to check if controller action variable is empty如何检查控制器动作变量是否为空
【发布时间】:2018-11-14 16:28:02
【问题描述】:

我在自己的观点中尝试过这个

<% if @post.url == nil %>
<h1>File not found!</h1>
<% end %>

在后期控制器中我有

def show
  @post = Post.find(params[:id])
end

如何判断@post.url是否为空?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    我会选择去

    if @post.url.nil? 
    

    @post.urlnil 时返回true,但当@post.url 为空字符串时返回false

    或者,您可以使用

    if @post.url.blank?
    

    @post.urlnil 或空字符串时,这两种情况都返回true

    【讨论】:

    • ActiveRecord::Base#find 如果找不到记录,会引发异常,不是吗?
    • @AlekseiMatiushkin Afaik 了解该页面存在的问题,但 page.url 可能为空白。我不确定ActiveRecord::Base#find 在这种情况下引发异常可能有什么帮助。
    • 我同意,对 OP 实际遇到的问题缺乏了解,但如果页面存在,&lt;% if @post.url == nil %&gt; 会起作用。 blank? 可能是解决方案,是的。
    • “空字符串”根据String""blank? 字符串是empty? String 或纯空格" ""\r\n\t" 使用empty? || (/\A[[:space:]]*\z/ === self) (省略了一些错误处理)
    【解决方案2】:

    类似问题的以下答案似乎是您所追求的:

    if my_string.to_s.empty?
      # It's nil or empty
    end
    

    见:Is There a Better Way of Checking Nil or Length == 0 of a String in Ruby?

    如果您需要比检查 nil 或空更复杂的方法,那么您可能需要一种 URL 验证方法。

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 2020-07-19
      • 1970-01-01
      • 2011-05-20
      • 2012-02-05
      相关资源
      最近更新 更多