验证 Rails 中的参数

2024-04-07

在我的 Rails 应用程序中,我想验证filter and post_type params.

两者都是可选的,但如果它们存在,则它们必须具有一个值,并且必须具有与有效值数组中的一个相匹配的值。

在我的控制器中,我有两种检查它们的方法:

def validate_filter
  if params.has_key?(:filter)
    if params[:filter].present?
      if ['popular', 'following', 'picks', 'promoted', 'first-posts'].include?(params[:filter])
        return true
      else
        return false
      end
    else
      return false
    end
  else
    return true
  end
end

def validate_post_type
  if params.has_key?(:post_type)
    if params[:post_type].present?
      if ['discussions', 'snaps', 'code', 'links'].include?(params[:post_type])
        return true
      else
        return false
      end
    else
      return false
    end
  else
    return true
  end
end

然后在我的主控制器方法中我这样做:

def index
    raise ActionController::RoutingError.new('Not Found') unless validate_filter && validate_post_type
    ...

所以这意味着post_type= and post_type=cam会返回 404 但是post_type=snaps会返回true。

有没有更好的方法来验证传递的参数是否有效,但对于空参数和密钥本身是否存在。仅使用blank? and present?在这种情况下还不够。


我可能会将此逻辑移至模型中,但如果您确实希望在控制器中使用它,则可以简化它。

def validate_filer
  return true unless params.has_key?(:filter)
  ['popular', 'following', 'picks', 'promoted', 'first-posts'].include?(params[:filter])
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

验证 Rails 中的参数 的相关文章

  • 在rails中,如何将记录作为csv文件返回

    我有一个名为 Entries 的简单数据库表 class CreateEntries lt ActiveRecord Migration def self up create table entries do t t string firs
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • 如何计算带有偏移量的异或?

    我想用不同的偏移量进行异或计算以在计算中列出 例子 key 0 1 0 text 0 1 0 1 0 1 0 1 1 1 异或计算 key 0 text 0 key 1 text 1 key 2 text 2 key 0 text 3 ke
  • Ruby 枚举器中的“break”与“raise StopIteration”

    如果我使用 Ruby Enumerators 来实现生成器和过滤器 generator Enumerator new do y x 0 loop do y lt lt x x 1 break if x gt CUTOFF end end l
  • 在 ec2 上托管 Rails

    我想将 Rails 部署到亚马逊 ec2 上 我看过 poolparty 和 ec2onrails 但似乎都不再维护了 人们用什么来做到这一点 都是自制的木偶和卡皮斯特拉诺 还是有一个项目可以让我继续下去 我可以推荐两个项目 如果您有一个
  • Rubymine 6 更新/刷新 Rails 项目中可用的方法和路径?

    这是一个例子 假设我更新路线resources foo这给我带来了一些新的道路 例如 new foo session当我开始在 ERB 视图中输入路径时 我希望它向我显示 建议自动完成与路径匹配的名称 当我输入 new foo 我会得到所有
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • Rails 3 在 Ruby 1.9.2 上初始化非常慢

    我使用 RVM 来管理环境 安装了 Ruby 1 9 2 p136 我认为是最新版本 和 Rails 3 创建了 gemset 并运行捆绑器 到目前为止一切正常 但 Rails 在运行命令 即生成 销毁 rake 等 时初始化速度非常慢 完
  • (Rails) Assert_Select 的烦人警告

    有谁知道如何让assert select在rake测试期间不输出所有那些讨厌的html警告 你知道 就像这样的东西 ignoring attempt to close body with div opened at byte 1036 li
  • 使用 attr_accessor 动态创建类属性

    在Ruby中 有没有办法动态地将实例变量添加到类中 例如 class MyClass def initialize create attribute name end def create attribute name attr acces
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company
  • 在 Rails 3 中渲染 Markdown 文本

    我想将 markdown 转换为 html 在我看来我有markdown some text variable 但我得到了错误undefined method markdown I added require BlueCoth 到envir
  • Nokogiri 保持 HTML 实体不变

    我希望 Nokogiri 保持 HTML 实体不变 但它似乎正在将实体转换为实际的符号 例如 Nokogiri HTML fragment p reg p to s 结果是 p p 似乎没有什么可以将原始 HTML 返回给我 inner h
  • 没有要加载的文件 - ffi_c (LoadError)

    这个问题困扰了我几天 每当我使用 bring to front 方法时 require rubygems require watir browser Watir Browser new browser bring to front 我收到此
  • 我无法让 ruby​​ 开发工具包适用于 Windows XP

    所以 我一生都无法让它正常工作 我的最终目标是安装 dbd odbc gem 并使其正常工作 从我读过的多篇文章来看 我需要安装ODBC 绑定 http www ch werner de rubyodbc 对于 ruby 以及 dbd od
  • 如何加载页面特定的rails 4 js文件?

    我正在阅读资产管道的 Rails 指南文档 它指出 CoffeeScript 页面特定生成的文件 如果清单上有 require tree 指令 则默认情况下可供用户使用 这对我不起作用我必须包括这个 在特定控制器上 我缺少什么 资产管道会将
  • 红宝石接球和效率

    catch在 Ruby 中意味着跳出深度嵌套的代码 在 Java 中 例如用Java也可以达到同样的效果try catch用于处理异常 但它被认为是糟糕的解决方案 而且效率非常低 在 Ruby 中 我们有处理异常的方法begin raise
  • 如何为 ApplicationController 中 after_action 过滤器中的所有操作渲染 json?

    是否可以在 Rails ApplicationController 中创建一个 after filter 方法 该方法在每个操作上运行并呈现为 JSON 我正在构建一个 API 并且希望将控制器中的每个操作的输出呈现为 JSON 客户控制器
  • 资产管道:仅对一个控制器使用 javascript 文件

    在 Ruby on Rails v4 中 我希望仅为特定控制器加载一个 js 文件 或一组 js 文件 执行此操作的标准方法是什么 在 application js 中有 require tree 线 我假设这需要删除 所以我并不总是加载每
  • 将rails_admin 与rails_api 结合使用

    我最初将此发布为Rails api GitHub 上的问题 https github com sferik rails admin issues 2617 但由于不活跃 我现在将其发布在这里 我正在尝试使用rails admin使用 Rai

随机推荐

  • SQL Server - Management Studio - 客户端统计 - 服务器回复等待时间与客户端处理时间

    我有一个运行缓慢的查询 我一直在努力优化它 在 Management Studio 中查看客户端统计信息时 服务器回复等待时间约为 8 秒 客户端处理时间约为 1 秒 我一直认为服务器回复的等待时间是要处理的数字 而客户端处理时间通常与带宽
  • 在 Rails 模型中一起验证日期和时间字段

    编辑 如果下面的问题看起来有点 广泛 总结是我只想在模型中组合日期字段和可选时间字段 纯粹是为了使用日期验证器验证它 但我不能当我传入一个字符串作为时间时 让我的测试正确失败 编辑2 由于我仍在努力寻找一种将日期对象与时间对象连接起来以进行
  • SyntaxError:无法在没有模块的情况下使用 import 语句,TypeError [ERR_UNKNOWN_FILE_EXTENSION]:Catch 22

    我一直在使用 Node js 时遇到问题 这是相关代码 app ts const express require express const auth require service auth import Request Response
  • 如何在Magento的view.phtml中显示标签产品

    我创建了新主题并使用它们来创建产品 在查看页面中 我没有看到产品标签 我默认查看 view pthml 并知道中的标签 echo this gt getChildHtml product additional data 我的 view ph
  • 如何在java中使用正则表达式非捕获组进行字符串替换

    我有一个改变的要求AssemblyVersion在新的构建上 我用java代码来做string replaceAll regexPattern updatedString 此代码适用于正常的正则表达式模式 但我无法在此模式中使用非捕获组 我
  • 如何检查 JSP 页面上的变量?

    我有一组工作页面 想要在 JSP 页面上的断点处检查变量 不幸的是 变量的上下文菜单不会像在 Java 文件中那样显示正常的 检查 监视 选项 有任何想法吗 这是一个对我有用的解决方案 在 Eclipse 中打开 显示 选项卡视图 窗口 g
  • “通常的算术转换”和“整数提升”是同一回事吗?

    通常的算术转换 和 整数提升 是同一回事吗 我读过 通常的算术转换 用于使表达式的操作数具有相同的类型 而 整数提升 用于提升小于的类型int to int 但在MSDN https msdn microsoft com en us lib
  • Bitbucket 与 Github 的优缺点比较 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Disclaimer This is a subjective question Please follow relevant guidelin
  • 可以在 Yii2 中更改动作类吗?

    是否可以更改动作类 http www yiiframework com doc 2 0 yii base inlineaction html Yii2以某种方式使用 类似于如何在配置文件中设置许多其他组件的类 我想扩展这个课程 这样我就可以
  • 如何在iOS SDK中删除两个字符串中的共同字母? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何删除两个字符串中的常见字母并使用剩余的唯一字母生成新字符串 例如 String 1 Optimus Prime String 2 Dej
  • 如何使用 kotlin 显示在 recyclerview 中选择的单个项目

    我们如何标记单个项目被选中Recyclerview使用科特林 当我选择一个项目并单击其他项目时 应取消选择之前选择的项目 这是我在 kotlin 中的适配器类 class ListAdapter var context Context va
  • notificationDataSetChanged() 不刷新可扩展列表视图

    我在用Expandable ListView其中的数据通过填充Sqlite数据库 我已经提供了从中删除群组的选项ExpandableListView它实际上删除了相应的row在数据库中 但是该活动不会刷新 并且删除的 案例 是可见的 直到人
  • 使用 spring.NET 配置静态属性

    使用 spring NET 配置以下类的最佳实践是什么 using System Collections Generic using Edu3 DTOModel namespace Edu3 Data SubsonicProvider Re
  • distanceTo 返回什么距离?

    是否考虑了海拔变化 我的意思是 如果我从这个三角形的左顶点开始并在右上顶点结束 它返回距离a还是b double distanceInMetersFloat initialPosition distanceTo finalPosition
  • 通过键与字典项绑定

    假设我有一些字典 我想将该字典中的项目绑定到某些控件 并且我想通过项目键进行绑定 public partial class Window1 Window public Window1 InitializeComponent Dictiona
  • angerlySetInnerHTML 和

    我的页面需要本地化 我用的是gettext 我的i18n 函数返回翻译后的字符串并替换 s带有提供参数的符号 据我所知 我不能 危险的设定 一个 JSX 元素 但是我需要插入打开和关闭标签 我无法将字符串分成多个部分 因为后端为我提供了这样
  • 如何知道图像是 RGB 还是 BGR 格式?

    有没有办法提前知道用作系统输入的图像是 RGB 还是 BGR 格式 我正在使用 OpenCV 和 java API 我想将输入图像转换为灰度或 L a b 颜色空间 但在 OpenCV 中 您必须首先指定要转换的图像是 RGB 还是 BGR
  • Ruby 的“open_uri”是否在读取或失败后可靠地关闭套接字?

    我一直在使用open uri拉下 ftp 路径作为数据源一段时间 但突然发现我几乎连续不断地收到 530 抱歉 已连接允许的最大客户端数 95 我不确定我的代码是否有问题 或者是否是其他人正在访问服务器 不幸的是 我似乎无法真正确定谁有问题
  • 带值的 NSArray

    如何创建一个带有填充值的 NSArray 也就是说 NSArray name NSArray alloc insert these values raju biju ramu 使用 NSArray initWithObjects 方法 记住
  • 验证 Rails 中的参数

    在我的 Rails 应用程序中 我想验证filter and post type params 两者都是可选的 但如果它们存在 则它们必须具有一个值 并且必须具有与有效值数组中的一个相匹配的值 在我的控制器中 我有两种检查它们的方法 def