Saya memiliki ini di route saya.rb

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

Ini tampaknya hanya berfungsi di localhost:3000/invoices/new/log_out seperti ketika saya di localhost:3000/invoices dan saya mengklik logout saya memiliki kesalahan berikut following

No route matches [GET] "/log_out"

Jadi saya ingin membuatnya berfungsi di semua pengontrol saya adalah lima sesuatu seperti 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 
0
kostasew 1 Juli 2020, 00:24

1 menjawab

Jawaban Terbaik

Melihat rute Anda:

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

Saat seseorang mengklik localhost::3000/invoices/log_out, permintaan akan diarahkan ke metode logout di UsersController Anda. Mengubah bagian jalur ke 'all_controllers/log_out' tidak akan mengubah apa pun tentang perilaku aplikasi Anda selain mengubah teks jalur. Itu tidak terlalu penting untuk masalah Anda, tetapi karena keluar adalah operasi global tunggal, Anda mungkin lebih baik hanya dengan '/log_out' sebagai jalur rute untuk menjaga semuanya tetap sederhana.

Anda tidak menyertakan cuplikan kode tampilan apa pun, tetapi masalah Anda hampir pasti terletak pada cara Anda menentukan link_to. Bagian :as => "log_out" dari rute Anda menentukan alias untuk rute tersebut. Rails membuat pembantu URL secara otomatis menggunakan alias itu (log_out_path dan log_out_url) yang dapat Anda gunakan dalam tampilan dan pengontrol untuk menautkan ke operasi itu:

<%= link_to "Logout", log_out_path %>

Menggunakan pembantu URL memastikan bahwa kode Anda menggunakan rute yang benar bahkan jika nanti Anda mengubah jalur sebenarnya di routes.rb.

2
rmlockerd 1 Juli 2020, 03:07