Rails 3 路线:DRY 成员

2023-11-25

我需要将以下成员方法添加到许多资源中,有没有办法将其干燥?

 member do
    get   :votes
    post  :up_vote
    post  :down_vote
  end

在我的routes.rb中

resources :news do
  resources :comments do
     member do
        get   :votes
        post  :up_vote
        post  :down_vote
      end
  end
end

resources :downloads do
  resources :whatever do
     member do
        get   :votes
        post  :up_vote
        post  :down_vote
      end
  end
end

EDIT

我实际上已将其移至模块中,如下所示:

module Votable
  module RoutingMethods
    def votable_resources
      member do
        get   "up_votes"
        get   "down_votes"
        post  "up_vote"
        post  "down_vote"
      end
    end
  end # RoutingMethods
end

现在,我的routes.rb 看起来像这样:

require 'votable'

include Votable::RoutingMethods

MyApp::Application.routes.draw do

  namespace :main, :path => "/" do
    resources :users do 
      resources :comments do
        votable_resources
      end
    end
  end

end

请参阅我的内联评论,但我希望命名路线如下所示:main_users_comments_up_votes


你不能在你的路由文件中定义一个方法吗?

def foo
  member do
   get   :votes
   post  :up_vote
   post  :down_vote
  end
end


resources :news do
 resources :comments do
   foo
 end
end

Edit

我以前没有使用过这种技术。当我做“耙路线”时,它似乎起作用了。无论如何,路由文件只是 Ruby 代码。请注意您定义的方法的名称,因为它是在 ActionDispatch::Routing::Mapper 的实例中定义的。

# routes.rb

MyApp::Application.routes.draw do
  puts self
  puts y self.methods.sort
end

# Terminal
> rake routes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3 路线:DRY 成员 的相关文章

  • Rails Partial (Rails 3, HAML) 任意慢

    我使用的是 Rails 3 0 1 HAML 0 3 22 和 Mongrel 1 1 5 MongoMapper 不是 AR 我正在渲染一个列表 每个列表项都是它自己的部分 每次页面渲染其中一个列表项部分时 渲染时间都会延长近 100 倍
  • 从 ActiveRecord 获取表名

    I used ActiveRecord Base set table name在动态创建的 ActiveRecord 类上设置我的表名称 现在我需要知道稍后如何获得该值 api 文档没有提及如何执行此操作 另外 我无法从 ActiveRec
  • 如何使用 Rails 应用程序中的 s3 在存储桶之间复制文件?

    我目前正在开发一个 Rails 应用程序 尝试将视频从 s3 中的一个存储桶复制 移动到另一个存储桶 但是我在 Rails 应用程序上不断收到代理错误 502 在杂种日志中 它显示 无法分配内存 一旦发生此错误 应用程序就会终止 我们必须重
  • 如何使用 RSpec 检查 JSON 响应?

    我的控制器中有以下代码 format json render json gt flashcard gt flashcard lesson gt lesson success gt true 在我的 RSpec 控制器测试中 我想验证特定场景
  • Ruby on Rails content_for 会自动进行 HTML 转义吗?

    使用 Rails 3 0 6 我发现在视图中 如果我执行 content for food name Macaroni Cheese 然后当我使用它回来时content for food name 那么 将被制作成 amp 已经 如果我做一
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • Rails Searchkick / Elasticsearch has_many 和belongs_to 关联

    我尝试使用 Searchkick 运行搜索并基于多个模型返回 我的书本模型包含这个 class Book lt ActiveRecord Base searchkick has many book subjects has many sub
  • Rails 3 - “无法解析 Yaml”

    我不知道我做错了什么 我尝试运行 rails c 但它只是给了我一个错误 10 分钟前它还在工作 C Ruby192 lib ruby 1 9 1 psych rb 148 in parse couldn t parse YAML at l
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • Ruby on Rails 3 - 为每个请求重新加载 lib 目录

    我正在为 Rails 3 应用程序创建一个新引擎 正如您所猜测的 该引擎位于我的应用程序的 lib 目录中 但是 我在开发它时遇到了一些问题 事实上 每次更改引擎中的某些内容时 我都需要重新启动服务器 有办法避免这种情况吗 我可以强制rai
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • Rails 3 Mechanize - SocketError:getaddrinfo:主机或名称未知

    我正在使用 mechanize 但出现此错误 有人可以帮帮我吗 我已将元刷新设置为 true 错误日志 SocketError getaddrinfo Host or name not known form C Ruby192 lib ru
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • 通过 ESI:include 设置 Cookie,如何?

    我正在尝试使用 esi 在我的网站上创建忍者缓存 这个想法是 该网站大部分是静态的 我只需要在用户是否登录时做一些花哨的事情 所以我试图在页面A上放置一个 并在页面B的应用程序中设置触发器 这样我就可以将页面 A 缓存在 varnish 上
  • Rails 3.1 和图像资源

    我已将管理主题的所有图像放入名为 admin 的文件夹内的资产文件夹中 然后我像平常一样链接到它 Ruby image tag admin file jpg CSS logo background url assets images adm
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end

随机推荐

  • JavaFX KeyEvent 返回 KeyCode.UNDEFINED

    我创建了一个简单的 JavaFX 应用程序 用于在 TextField 中接收用户的输入 我将 KeyTyped 事件从 SceneBuilder 附加到控制器 我的函数如下所示 FXML private void keyTyped Key
  • 无法以编程方式添加到 IIS 的绑定-redirection.config 权限(带有视频!)

    这是我的问题的视频摘要http screencast com t v6th4BuRLhV 我正在尝试使用以下代码以编程方式将绑定添加到 IIS public void AddBindings string sitename string h
  • 如何使用硬件配置文件从命令行创建 AVD?

    目前 我一直在通过 Android Studio UI 的 工具 gt AVD 管理器 管理 AVD 这适用于创建具有特定硬件配置文件 我在 XML 文件中 的 AVD 但我发现 AVD 经常会以某种方式损坏 AVD 旁边是 UI 中的 修
  • 如何在 SKmap 上显示自定义路线

    那么如果我们有一个本地旅行规划器 是否可以在 Skobbler 地图上显示路线 有没有什么方法可以SKMapSurfaceViewAndroid SDK上要传递一个路由来显示吗 Yes 绘制轨道元素 您可以在中看到一个示例demo项目 轨道
  • Maven 依赖排除似乎不起作用

    我有一个 Maven 项目 依赖于其他几个 Maven 项目 我在我的项目中使用 Spring 3 1 1 依赖项目有 3 0 6 我试图在部署时排除 Spring 3 0 6 因为两者都不可能 我已经在我的 POM 中添加了一个明确的排除
  • 获取相对于 android 中最顶层父级的视图位置

    要获得相对于其父级的视图 我可以使用getLeft getRight getTop and getBottom 但是如何获得相对于布局文件最顶层父级的视图呢 所以说我的前夕布局是RelativeLayout 然后说在 eve 内部我有许多嵌
  • 具有多个参数的骨干路由器

    我需要让它发挥作用 routes product showProduct product detail showProductDetail 在设置 product 路由时 即使之后设置 也永远不会调用 showProductDetail 我
  • 当在命令行上指定要打开的文件时,MFC 应用程序在 ProcessShellCommand() 中崩溃

    我需要解决的问题是如何使用MFC功能ProcessShellCommand in the InitInstance of a CWinApp当另一个应用程序启动打开文件的应用程序时 处理具有特定路径的文件打开 我有一个 MFC MDI 多文
  • Python ctypes:如何修改现有的 char* 数组

    我正在开发一个使用 libupnp C 库 的 Python 应用程序 我正在使用 CTypes 来使用这个库 这很简单 我遇到的问题是当我为读取请求注册回调函数时 该函数具有以下形式的原型 int read callback void p
  • Google 地图图标(图钉)- 如何定义颜色? [复制]

    这个问题在这里已经有答案了 是否可以更改由其 api 创建的谷歌地图上的图钉位置的颜色 或者必须使用自定义图标来做到这一点 这是谷歌地图 API v3 tnx 在广告中 您可以在初始化地图时声明图像 var overlay function
  • 在 JavaScript 中使用 Chrome 中的系统打印对话框

    我们遇到了 Chrome 的 打印预览 无法正确打印页面的问题 如果您使用 使用系统打印对话框链接 Ctrl Shift P 它可以很好地打印我们的页面 几乎与 Firefox 相同 我们的页面上有一个按钮 可以调用 window prin
  • 如何从 iPhone 上的 caf 文件访问/提取原始(无头)音频数据?

    我正在开发一个项目 需要我将原始无头 ulaw 或线性 pcm 数据发送到服务器 我正在使用 AVAudioRecorder 我可以很容易地将音频文件保存到手机上 但问题是 无论我尝试做什么 它们都会被包装在 caf 文件中或被标记为某种标
  • 如何使我的程序在 Windows Vista 和 Windows 7 中运行?

    我有一个用 Delphi 2006 编写的应用程序 它在 Windows XP 中运行良好 我使用 Inno Setup 打包应用程序 并使用 Program Files 作为默认文件夹 一些用户迁移到 Windows Vista 和 Wi
  • 编码技巧 - 交集类型和 java 枚举 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 交集类型允许您 有点 执行具有继承层次结构的枚举 您不能继承实现 但可以将其委托给辅助类 enum Foo1 implements Bar enum Foo2 implements B
  • F#:异步、任务和 PLINQ,天哪!

    当F 问世时 我将在异步 并行编程领域获得财富 一个回答这个问题很好地描述了任务 并行 LINQ 和响应式框架之间的差异 但我想知道异步工作流程到底是如何适应这种情况的 如果我错了 请纠正我 但据我了解 异步工作流程将是处理 IO 绑定操作
  • 如何在GridView中创建删除按钮?

    我在我的另一个专栏GridView称为删除 单击删除时 应删除该行 换句话说 我需要获取当前行的用户名才能将其删除 我应该使用哪个事件 行删除 行删除等 如何从当前行获取用户名 这是一篇关于DataGrid的典型用法 Enjoy
  • Horizo​​ntalScrollView 在 RTL 模式下不会向左滚动

    我有 Horizo ntalScrollViewandroid supportsRtl true 在我的应用程序中 但它不是向左滚动 而是向右滚动 我该如何解决这个问题
  • 如何在 Python 中运行单元测试时临时隐藏 stdout 或 stderr

    我有一个错误的第三方 python 模块 在导入时输出到 stdout 或 stderr 这破坏了我的单元测试的输出 如何临时重定向stdout以隐藏其输出 限制为 Python 2 5 语法 Update 我忘记说了sys stdout
  • 转换 tex 源,以便所有宏都被它们的定义替换

    是否可以看到 TeX 预处理器 的输出 i e 实际输出完成之前的中间步骤 但所有用户定义的宏都被替换 只留下 TeX 原语的子集 或者说没有这样的中间步骤 Write edef xxx Any text with any commands
  • Rails 3 路线:DRY 成员

    我需要将以下成员方法添加到许多资源中 有没有办法将其干燥 member do get votes post up vote post down vote end 在我的routes rb中 resources news do resourc