簡體   English   中英

模型中的自定義Ruby路由

[英]Custom Ruby Routes in Model

好的,這兩個相關問題是參考Railscast#21的

我在路線上遇到了麻煩。 兩個問題:

1)本教程中的路由似乎與應用程序的根目錄有關; 我希望它們相對於模型的根源。 所以

http://example.com/login ”我需要成為“ http://example.com/model/login ”(反之亦然,即退出)。

我正在使用永久鏈接來引用我的記錄,並且我不知道如何指定替代,因為每次嘗試使用“ http://example.com/model/login ”時,我都會收到一條錯誤消息:找不到記錄 “登錄”。 如何覆蓋此以進行登錄/注銷?

2)為我使用自定義路線似乎並沒有將自定義路線保留在我的地址欄中。 因此,轉到“ http://example.com/login ”會將我帶到正確的頁面,但是瀏覽器現在在地址欄中說“ http://example.com/session/new ”。 在本教程中,這不會發生:該應用提供正確的頁面,並將自定義路線保留在地址欄中。 我怎樣才能做到這一點?

## 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

“模型的根”是什么意思? 您應該路由到控制器及其動作 控制器應與模型進行通信。

錯誤消息可能會有些混亂,但是據我所知,該URL:

http://example.com/model/login

會使用此路由在名為model的控制器中使用空ID調用名為login的操作(可能不存在此操作):

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

如果您想在路由中使用“子文件夾”,則可以使用名稱空間,我不記得它的每一個細節,但是您可以在這里找到很多有關它的信息。 一個警告:名稱空間使路由調試變得更加困難,弄清楚真正使用的路由我獲得了很多樂趣。 我最終創建了許多非常特定的路由,以確保使用了正確的路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM