Rails 路由和控制器模块 - 命名空间?

2023-12-14

我无法为我的控制器创建模块,也无法让我的路由指向控制器内的该模块。

出现此错误:

Routing Error
uninitialized constant Api::Fb

所以,这就是我的路线设置方式:

namespace :api do
  namespace :fb do
    post :login
    resources :my_lists do
      resources :my_wishes
    end
  end
end

在我的 fb_controller 中,我想包含为我提供如下路径的模块:

/api/fb/my_lists

这是我的一些 fb_controller:

class Api::FbController < ApplicationController
  skip_before_filter :authenticate_user!, :only => [:login]

  include MyLists # <-- This is where i want to include the /my_lists
                  # namespace(currently not working, and gives me error 
                  # mentioned above)

  def login
    #loads of logic
  end
end

MyLists.rb 文件(我在其中定义模块)与 fb_controller.rb 位于同一目录中。

如何让命名空间指向 fb_controller 内部的模块,例如 /api/fb/my_lists ?


您设置的命名空间正在寻找如下所示的控制器类

class Api::Fb::MyListsController

如果你想要一条看起来像这样的路线/api/fb/my_lists但你仍然想使用FbController而不是有一个MyListsController你需要将你的路线设置为如下所示

namespace :api do
  scope "/fb" do
    resources :my_lists, :controller => 'fb'
  end
end

在我看来,而不是包含一个模块MyLists在你的FbController看起来有点尴尬。

我可能会做的是有一个模块FB使用通用 FbController 然后有MyListsController < FbController。无论如何,这超出了你的问题范围。

以上应该可以满足您的需求。

EDIT

根据您的评论以及我对您尝试执行的操作的假设,这是一个小例子:

配置/routes.rb

namespace :api do
  scope "/fb" do
    post "login" => "fb#login"
    # some fb controller specific routes
    resources :my_lists
  end
end

api/fb/fb_controller.rb

class Api::FbController < ApiController
  # some facebook specific logic like authorization and such.
  def login
  end
end

api/fb/my_lists_controller.rb

class Api::MyListsController < Api::FbController
  def create
    # Here the controller should gather the parameters and call the model's create
  end
end

现在,如果您想创建一个MyList对象然后你可以直接对模型执行逻辑。另一方面,如果您想要处理更多逻辑,您需要将该逻辑放入一个服务对象中,该对象处理 MyList 及其关联的 Wishes 或您的愿望的创建MyList模型。不过我可能会选择服务对象。请注意,服务对象应该是一个类而不是一个模块。

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

Rails 路由和控制器模块 - 命名空间? 的相关文章

随机推荐

  • 生命游戏数组索引越界

    我正在玩康威的生命游戏 我很确定我即将完成 但是当我运行它时 我得到Exception in thread main java lang ArrayIndexOutOfBoundsException 1 at game of life Ga
  • 从表中选择 *,其中日期 = 今天

    需要 PHP MySql 帮助 需要选择 今天 的所有记录 我的表有一列包含 unix 时间戳 我只想从表中选择 unix 时间戳 今天 很高兴在 Linux 命令行上执行此操作 只需要基本的 MySql 查询 我会选择 SQL 版本 SE
  • 显示 BLOB 图像 Laravel 4

    我在 mysql 上添加了 png 图像作为 BLOB 但是当我尝试检索它们时 我将它们作为文件获取 但无法显示为图像 下面是我的代码 控制器 public function post news image Input file image
  • 控制 ASP.Net MVC 中的输出缩进

    我的同事非常 热衷 将格式正确且缩进的 html 传送到客户端浏览器 这是为了使页面源代码易于被人阅读 首先 如果我有一个在站点中多个不同区域使用的部分视图 渲染引擎是否应该自动为我设置缩进格式 例如在 XmlTextWriter 上设置
  • ImageView圆角[重复]

    这个问题在这里已经有答案了 我希望图像有圆角 我实现了这个 xml 代码并在我的图像视图中使用它 但图像与形状重叠 我正在通过异步任务下载图像
  • ios音频单元remoteIO录音时播放

    我被要求将 VOIP 添加到游戏中 跨平台 因此无法使用 Apple gamekit 来做到这一点 已经有三四天了 我一直在努力让我的注意力集中在音频单元和远程IO上 我忽略了数十个示例等 但每次都只是对输入 PCM 应用简单的算法并在扬声
  • 使用 NSXMLParser 解析 XML

    我有一个关于 xml 解析的问题 通常 XML文件的样式是这样的
  • 如何在spark scala中使用带有2列的array_contains?

    我有一个问题 我想检查字符串数组是否包含另一列中存在的字符串 我目前正在使用下面的代码 该代码给出了错误 withColumn is designer present when array contains col list of desi
  • R 中的双冒号 (::) 是什么?

    我正在关注 Rbloggers 中的教程 发现双冒号的使用 我在网上查找 但找不到其使用的解释 这是它们的使用示例 df lt dplyr data frame year c 2015 NA NA NA trt c A NA B NA 我知
  • Greasemonkey @require 在 Chrome 中不起作用

    我正在尝试使用 Greasemonkey 添加 jQuery require include方法 但是不起作用 显示以下错误 Uncaught ReferenceError is not defined repeated 10 times
  • WinForm c#:检查首次运行并显示消息

    我正在创建一个包含首次运行检查的 winform 应用程序 我一直在关注这两篇文章 如何检查程序是否是第一次运行 C 中的 Windows 窗体用户设置 首次运行检查应该检查应用程序是否曾经运行过 如果没有运行过 它应该向用户显示一些消息
  • 在 TypeScript 中扩展特定类型的数组

    我知道如何扩展任何类型的数组 declare global interface Array
  • MongoDB NodeJS 本机驱动程序(mongodb) 与 Mongo Shell 性能对比

    我在 MongoDB 表 1 中有 10000 条记录 数据如下 id ObjectId 5d5e500cb89312272cfe51fc cities cityid 5d5d2205cdd42d1cf0a92b33 value XYZ c
  • Android 活动识别不适用于 Nexus 5

    我有一个正在使用谷歌活动识别更新的代码 现在突然之间 这些似乎每秒发送几次更新 或者从不发送更新 尽管每 20 秒请求一次 我没有更改代码并检查了早期版本 但遇到了同样的问题 我根据教程构建了一个最小的示例 但我的 Nexus 5 设备没有
  • 量词与非量词

    我有一个关于量词的问题 假设我有一个数组 我想计算该数组的数组索引 0 1 和 2 declare const cpuA Array Int Int assert or select cpuA 0 0 select cpuA 0 1 ass
  • C 宏将字符串转换为 pascal 字符串类型

    我想要一些关于宏的想法 用于将预处理器定义的字符串转换为 pascal 类型字符串 然后能够使用宏来初始化 const char 数组等 像这样的事情会很棒 define P STRING CONV str const char strin
  • 以编程方式锁定或关闭屏幕

    我想要turn off 锁定屏幕以编程方式控制我的设备 目前 当我尝试时 DevicePolicyManager mDPM DevicePolicyManager getSystemService Context DEVICE POLICY
  • 在 C# 中自动完成文本框

    我正在尝试自动完成文本框 我正在从 Access 数据库检索值 仅数据表中的一个字段 如果有人可以帮助我 AutoCompleteStringCollection autoCompleteList new AutoCompleteStrin
  • 如何在android中改变位图图像的颜色?

    我正在开发一个 Android 应用程序 其中我将图像设置为 imageview 现在 我想以编程方式更改位图图像颜色 假设我的图像最初是红色的 现在我需要将其更改为橙色 我怎样才能做到这一点 请帮忙 这是我的代码 我设法改变不透明度 但我
  • Rails 路由和控制器模块 - 命名空间?

    我无法为我的控制器创建模块 也无法让我的路由指向控制器内的该模块 出现此错误 Routing Error uninitialized constant Api Fb 所以 这就是我的路线设置方式 namespace api do names