【问题标题】:Custom Ruby Routes in Model模型中的自定义 Ruby 路由
【发布时间】:2010-09-22 14:09:18
【问题描述】:

好的,这两个相关问题参考Railscast #21

我遇到了一些路线问题。两个问题:

1) 教程中的路由似乎是相对于应用程序的根目录的;我希望它们相对于模型的根。所以

@987654322@”我需要是“@987654323@”(反之亦然)。

我正在使用永久链接来引用我的记录,但我不知道如何指定覆盖,因为每次我尝试使用“@987654324@”时都会收到一条错误消息,提示找不到记录“登录”。如何在登录/注销时覆盖它?

2) 为我选择自定义路线似乎不会在我的地址栏中保留自定义路线。所以转到“@987654325@”会让我进入正确的页面,但浏览器现在在地址栏中显示“@987654326@”。在本教程中,这不会发生:应用程序提供正确的页面并将自定义路由保留在地址栏中。我怎样才能让这件事发生在我身上?

## Sessions Controller
class SessionController < ApplicationController
  def create
    session[:password] = params[:password]
    flash[:notice] = "Successfully Logged In"
    redirect_to :controller => 'brokers', :action => 'index'
  end

  def destroy
    reset_session
    flash[:notice] = "Successfully Logged Out"
    redirect_to login_path
  end
end

## Routes
ActionController::Routing::Routes.draw do |map|
  map.resources :brokers, :session
  map.login 'login', :controller => 'session', :action => 'create'
  map.logout 'logout', :controller => 'session', :action => 'destroy'
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

【问题讨论】:

    标签: ruby-on-rails routing


    【解决方案1】:

    “模型的根”是什么意思?你应该为 controllers 和他们的 actions 创建路由。控制器应该与 model 进行通信。

    错误消息可能有点混乱,但据我所知,这个网址:

    http://example.com/model/login

    将在名为 model 的控制器中调用名为 login 的操作,其 ID 为空(可能不存在),使用以下路由:

    map.connect ':controller/:action/:id'

    如果你想在你的路径中有一个“子文件夹”,你可以使用命名空间,我不记得它的每一个细节,但你可以找到很多关于它的信息here。一句警告:命名空间使路由调试变得更加困难,我在弄清楚真正使用了哪条路由时获得了很多乐趣。我最终创建了许多非常具体的路线,以确保使用正确的路线。

    【讨论】:

      猜你喜欢
      • 2015-06-08
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      相关资源
      最近更新 更多