2011-04-01 69 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

相关问题