2011-04-01 59 views
1

所以我有一個簡單的Rails表單發送到控制器admin,動作checkLogin。如果憑證正確,則將用戶重定向到名爲main.html.erb的新視圖。現在在我的控制器中,我從字面上嘗試了一切,從render 'main';到redirect_to。但我不斷收到以下錯誤:Rails 3 Routes/Render Missing Template

ActionView::MissingTemplate (Missing template admin/activate with { 
    :handlers=>[:rjs, :rhtml, :rxml, :builder, :erb], 
    :formats=>[:js, :"application/ecmascript", :"application/x-ecmascript", :"*/*"], 
    :locale=>[:en, :en]} in view paths "/home/xxx/xxx/xxx/rails/beta/app/views" 

這是一個路由問題,或者是什麼?

+0

查看'admin/activate'位於哪裏? – Zabba 2011-04-01 02:42:18

+3

它有助於查看窗體和控制器的相關部分 – oliverbarnes 2011-04-01 03:08:42

回答

0

您是否將'checkLogin'添加到路由中。試試這個,在你的routes.rb

resources :admin do 
    member do 
    get 'checkLogin' 
    end 
end 

**注:獲得「checkLogin」可能會根據您的情況進行後「checkLogin」 ..

和你的控制器動作「checkLogin」裏面,呈現部分

render :partial => 'main' 
1

嘗試render :file => 'admin/main.html.erb'指定確切的文件。

問題是渲染調用正在尋找一個匹配控制器操作名稱的文件,但它沒有找到它。所以,指定確切的文件,你應該沒問題。

僅供參考如果您致電render 'main',那麼它會嘗試呈現與您的「主要」操作相關聯的視圖,如果您沒有「主要」操作,則該視圖可能無法正常工作。

此外,請確保您的意思是渲染。如果你有一個主要的行動,並且你想要在那個行動中定義的東西發生,那麼你需要redirect_to main_whatever_path

相關問題