【问题标题】:How can i route a mothod for more than one controller rails 6我如何为多个控制器导轨路由一种方法 6
【发布时间】:2020-06-30 21:24:03
【问题描述】:

我的 routes.rb 中有这个

  get "invoices/log_out" => "users#logout", :as => "log_out"

这似乎只适用于localhost:3000/invoices/new/log_out 当我在localhost:3000/invoices 并单击注销时,出现以下错误

No route matches [GET] "/log_out"

所以我想让它在我所有的控制器中工作是五个 类似get "all_controllers/log_out" => "users#logout", :as => "log_out"

   <nav class="navi_me">
          <ul>
          <li><a href="/proms/add_prom">Εισαγωγη Προμηθευτη</a></li>
          <li><a href="/proms">Προμηθευτες</a></li>
          <li><a href='/items'>Προϊόντα</a></li>
          <li><a href='/items/insert'>Εισαγωγη Προϊόν</a></li>
          <li><a href='/invoices'>Τιμολόγια</a><li> 
          <li><a href='/invoices/new'>Εισαγωγη Τιμολόγιου</a><li>
          <li><a href='/pbinvoices'>Πιστωτικά Τιμολόγια</a><li>
          <li><a href='/pbinvoices/new'>Εισαγωγη Πιστωτικου Τιμολόγιου</a><li>
          <li><a href='/census'>Απογραφες</a><li>
          <li><a href='/users/setting'>User Setting</a></li>
          <li><a href="log_out">Αποσύνδεση</a></li>
        </li>
      </ul>
      </nav>
    ```

  def logout
    session[:user_id] = nil
    redirect_to users_login_path , :notice => "Logged out!"
  end 

【问题讨论】:

  • 请不要在问题本身中编辑答案,有人会花时间帮助你,让其他人阅读他/她的答案,如果这也适合他们,请点赞。

标签: ruby-on-rails ruby-on-rails-5 rails-routing


【解决方案1】:

查看您的路线:

get "invoices/log_out" => "users#logout", :as => "log_out"

当有人点击localhost::3000/invoices/log_out 时,它会将请求路由到您的UsersController 上的logout 方法。将路径部分更改为 'all_controllers/log_out' 不会改变您的应用程序的任何行为,除了更改路径的文本。这对您的问题并不重要,但由于注销是一个单一的全局操作,您最好只使用 '/log_out' 作为路由路径以保持简单。

您没有在视图代码中包含任何 sn-ps,但您的问题几乎可以肯定在于您如何指定 link_to。路由的 :as =&gt; "log_out" 部分定义了路由的别名。 Rails 使用别名(log_out_pathlog_out_url)自动创建 URL 助手,您可以在视图和控制器中使用该别名链接到该操作:

<%= link_to "Logout", log_out_path %>

使用 URL 帮助程序可确保您的代码使用正确的路由,即使您稍后更改了 routes.rb 中的实际路径。

【讨论】:

    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多