Bagaimana cara saya mengalihkan ke root - public/index.html?

Saya ingin melakukan pengalihan ke index.html di folder aplikasi/publik saya.

def get_current_user
   @current_user = current_user
   if @current_user.nil?  
      redirect_to root_path
   end 
end

Bagaimana cara mencapai ini?

Saya belum mengubah root di rute.rb saya (Masih dikomentari)

 # root :to => "welcome#index"

Saya mendapatkan pesan kesalahan yang mengatakan root_path tidak terdefinisi.

Bagaimana cara mengubah rute.rb sehingga root_path menunjuk ke public/index.html ?


person geeky_monster    schedule 06.06.2011    source sumber
comment
Daripada menggunakan root_path, gunakan redirect_to '/'   -  person meagar    schedule 07.06.2011
comment
@meagar Itu jawaban, bukan komentar, jadi mengapa Anda tidak membuat jawaban saja daripada mengomentari pertanyaan?   -  person MBO    schedule 07.06.2011
comment
@MBO Ini bukan jawaban. Pertanyaannya adalah Bagaimana cara melakukan X? dan komentar saya adalah Jangan, lakukan Y saja. Ini bukan jawaban yang dapat diterima IMO, dan saya akan memberi suara negatif pada orang lain karena mempostingnya seperti itu.   -  person meagar    schedule 07.06.2011


Jawaban (5)


Apa yang ingin Anda lakukan tidak kompatibel dengan Rails.

Rails adalah MVC, C untuk pengontrol, V untuk tampilan.

Jadi internalnya membutuhkan keduanya.

Oke, public/index.html ditampilkan secara default tetapi itu hanya karena proses dilewati.

Jadi, Anda dapat membuat pengontrol static dengan tindakan index dan tampilan yang sesuai (cukup salin/tempel konten public/index.htmlfile Anda saat ini di dalamnya).

Kemudian atur:

root :to => "static#index"

Dan tolong, hapus file public/index.html :)

person apneadiving    schedule 06.06.2011
comment
Rails mendukung penyajian konten statis dari direktori public. Ini sepenuhnya kompatibel dengan Rails. - person meagar; 07.06.2011
comment
@apneadiving Rails hadir dengan public/index.html statis di luar kotak untuk setiap proyek baru, dan berfungsi dengan cukup baik. Anda sebaiknya memberitahunya bahwa dia harus menyentuh database atau dia tidak akan menggunakan 'M' di 'MVC'. - person meagar; 07.06.2011
comment
Rails juga adalah MVC, C untuk pengontrol, V untuk tampilan. Jadi kebutuhan internal keduanya sepenuhnya salah. Setiap kali Anda melakukan redirect_to Anda tidak menggunakan V di MVC. - person meagar; 07.06.2011
comment
@meagar Saya baru mengenal Rails (dan MVC secara umum), jadi bisakah Anda menjelaskan lebih lanjut mengapa redirect_to berarti kami tidak menggunakan 'V'? Saya tidak mengerti. Jika itu memerlukan pertanyaan baru untuk jawaban yang panjang, beri tahu saya, saya akan membuatnya! - person Lucas; 07.06.2011
comment
@Lucas Tidak ada View yang terlibat saat Anda memanggil redirect_to dari tindakan pengontrol. - person meagar; 07.06.2011

Anda dapat menetapkan rute bernama ke file statis dengan meneruskan string yang tidak kosong sebagai :controller dan jalur ke file sebagai :action untuk rute tersebut:

Application.routes.draw do

  root :controller => 'static', :action => '/' 
  # or
  # root :controller => 'static', :action => '/public/index.html'

end

# elsewhere

redirect_to root_path # redirect to /

Dengan asumsi Anda memiliki public/index.html, inilah yang akan disajikan.

person meagar    schedule 06.06.2011
comment
melakukan hal ini juga berarti bahwa tampilan yang disajikan tidak ada hubungannya dengan tampilan lain di aplikasi yang sebenarnya tidak mungkin terjadi. Tampilan memiliki tata letak yang sama, itulah keindahan Rails DRYness. - person apneadiving; 07.06.2011
comment
@apneadiving Melakukan hal itu menyiratkan lebih dari sekadar kurangnya tata letak bersama, tetapi tidak ada yang salah dengan itu. Jika Anda ingin menyajikan file indeks statis maka mungkin Anda telah memutuskan tidak tata letak yang umum, dan sama sekali tidak ada alasan untuk tidak menyajikan index.html dengan cara ini. - person meagar; 07.06.2011
comment
@meagar Benar-benar. Sebenarnya, IMO itu adalah pilihan antara tata letak bersama (MVC) dan respons cepat (file statis). Rails mendukung keduanya, keindahan fleksibilitas Rails. (Dalam kasus MVC saya masih bisa menggunakan CSS untuk menjaga tampilan tetap terlihat bersama.) - person Franklin Yu; 21.12.2015

pada pengontrol

 redirect_to root_path ## (will redirect to root '/')
person Rahul Patel    schedule 28.04.2016

file rute:

     root 'main#index'

pengontrol:

     class MainController < ApplicationController
       def index
         redirect_to '/index.html'
       end
     end

dan menggunakan aksi pengontrol Rails 4 secara langsung, ini dapat berperilaku seperti aplikasi satu halaman menggunakan M&C dengan twist pada V

person copremesis    schedule 17.11.2015
comment
Anda sebenarnya bahkan tidak perlu mendefinisikan tindakan def index. Hanya mendefinisikan file pengontrol dan indeks saja sudah cukup. Rails akan melewatkan tindakan di rute tersebut, jika tidak ditemukan. - person LessQuesar; 03.04.2017

rute.rb

...
root to: redirect('public/index.html')
...

Ini akan mengalihkan semua permintaan ke '/', ke 'public/index.html'.

person eriel marimon    schedule 12.01.2020