[英]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.