Rails中不存在路径/根目录时如何重定向到另一个页面

时间:2019-05-30 12:59:15

标签: ruby-on-rails routing

我是Rails开发的新手。

我的疑问是,如果当前路径不存在,是否有可能重新定义另一条路径

例如,

rout.rb

public function obtainSelectedProfile()
{
$SelectedCompany= $this->obtainLoggedOnCompany->first();

return $this->hasMany('app\Profile','user_id')->where('company_id', '=', 
$SelectedCompany->company_id);
}

如果任何人浏览“ / new”或“某处”,这都不在我的route.rb中,那么它将显示以下错误消息,

  

路由错误

     

没有路线与[GET]“ / new”匹配

     

Rails.root:C:/ wamp / www / ruby​​OnRailse / MyApp

     

应用程序跟踪|框架跟踪完整跟踪

     

路线

     

路由从上到下优先匹配

如果有可能解决此问题。

  

注意:

     

我使用匹配“ * path” => redirect(“ /”)

     

此方法对我不起作用

     

如果一切正常,请解释一下这是什么意思,因为我无需修改即可直接使用此行。

1 个答案:

答案 0 :(得分:0)

您可以使用:

resources :userlists

别忘了在视图/用户列表中创建一个新的html文件

new.html.erb or somewhere.html.erb

来源:https://guides.rubyonrails.org/routing.html

更新

您可以在对redirect_to的呼叫中设置即显消息。它将接受密钥:notice或:alert:

redirect_to articles_path, notice: "Article Created"
redirect_to login_path, alert: "You must be logged in!"

请记住,redirect_to不会导致动作停止执行。这不像在Ruby方法中调用return一样。

这是怎么可能出错。假设您有这样的删除操作:

def destroy
  article = Article.destroy(params[:id])
  redirect_to articles_path, notice: "Article '#{article.title}' was deleted."
end

然后,您开始为应用程序添加安全性。您已经看到了Ruby代码中使用的“保护子句”,其中return语句可以尽早切断方法。您决定在这里模仿它:

def destroy
  redirect_to login_path unless current_user.admin?
  article = Article.destroy(params[:id])
  redirect_to articles_path, notice: "Article '#{article.title}' was deleted."
end