Apakah ada kerugian menggunakan nama tunggal untuk pengontrol dan pembantu? Sepertinya tidak ada yang bergantung pada ini. Bahkan tampaknya pembantu tidak harus membuat pilihan yang sama tentang tunggal vs. jamak sebagai pengontrol yang sesuai, setidaknya menurut eksperimen terbatas saya. Benarkah itu?
ruby-on-rails
naming-conventions
allyourcode
sumber
sumber
Jawaban:
Pasti jamak .
Dengan perutean yang tenang dan pengontrol tunggal
Pengontrol:
Rute:
Menggunakan pengontrol jamak
Pengontrol:
Rute:
rails generate controller --help
memiliki contoh jamak:sumber
Menggunakan nama jamak untuk pengontrol hanyalah konvensi.
Nama jamak biasanya terdengar lebih natural (terutama untuk pengontrol yang terikat langsung ke model tertentu: Pengguna -> Pengguna, dll.), Tetapi Anda dapat menggunakan apa pun yang Anda inginkan.
Adapun pembantu, semua pembantu tersedia untuk semua pengontrol secara default, jadi secara teknis, bagaimana Anda memberi nama pembantu Anda tidak masalah sama sekali. Ini hanyalah konvensi lain untuk menyimpan fungsi helper pengontrol di helper dengan nama yang sama dengan pengontrol.
sumber
Model adalah tunggal karena mereferensikan satu objek seperti Pengguna. Kontroler bersifat jamak karena merupakan kontrol (metode) untuk kumpulan Pengguna. Bagaimana seseorang menamai rute tersebut tergantung pada pengembang individu itu. Saya tidak pernah memiliki pengguna yang mengeluh bahwa URL untuk permintaan web berbentuk tunggal atau jamak. Hasil akhirnya untuk mempertahankan konvensi umum untuk kontributor saat ini dan di masa depan sambil menyajikan tampilan halaman berkualitas atau permintaan API untuk pengguna akhir.
sumber
Anda memiliki penjelasan yang sangat lengkap di panduan Rails: http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default
sumber
Ini adalah konvensi Rails bahwa satu pengontrol menangani satu model, apakah satu atau beberapa contoh model itu dapat ada selama runtime. Namun, Anda dapat memiliki aplikasi Rails di mana (beberapa) pengontrol (dan tampilan terkait) tidak terkait dengan model tertentu, melainkan menangani sekumpulan fungsionalitas yang lebih kompleks. Dalam kasus ini, pluralisasi otomatis tidak masuk akal.
Aplikasi Rails yang sedang saya kerjakan cocok dengan kategori ini, dan ini hanya mengganggu saya karena Rails mengharapkan bahwa pengidentifikasi yang saya definisikan sebagai satu tempat di satu tempat kemudian digunakan dalam bentuk jamak di tempat lain. Misalnya, saya mungkin ingin mendefinisikan sesuatu seperti ini di
config/routes.rb
:dan kemudian saya ingin pengontrol
DashboardController
menampilkan informasi ringkasan tentang aspek tertentu dari aplikasi, mengumpulkan informasi dari lebih dari satu tabel database. Jadi di sini,Dashboard
tidak mengacu pada model aplikasi apa pun, dan akan sangat aneh memiliki nama pengontrolnyaDashboardsController
.Saya menemukan solusi yang baik untuk gangguan pluralisasi otomatis dalam jawaban ini . Singkatnya, edit file
config/initializers/inflections.rb
dan tambahkan kata yang tidak Anda inginkan menjadi jamak secara otomatis ke definisi ini:sumber
Konvensi penamaan pengontrol di Rails mendukung pluralisasi kata terakhir dalam nama pengontrol, meskipun tidak benar-benar diperlukan (misalnya
ApplicationController
).Misalnya,
ClientsController
lebih disukai daripadaClientController
,SiteAdminsController
lebih disukai daripadaSiteAdminControlle
r atauSitesAdminsController
, dan seterusnya.Mengikuti konvensi ini akan memungkinkan Anda untuk menggunakan generator rute default (misalnya sumber daya, dll) tanpa harus memenuhi syarat masing
:path
- masing atau:controller
, dan akan menjaga penggunaan URL dan jalur pembantu konsisten di seluruh aplikasi Anda.Ref: Pengontrol Naming Convention-Rails Doc
sumber
Saya merasa lebih baik ketika saya menggunakan tunggal untuk nama Controller
sumber
Jika pengontrol adalah sumber daya maka itu harus jamak ...
Sebagai contoh
Kontroler
Model
Tetapi Anda dapat menggunakan nama pengontrol tunggal jika Anda tidak memiliki model yang sesuai seperti
sumber
Menggunakan bentuk jamak hanya terdengar lebih baik, dan kemudian jika Anda memiliki pengontrol yang menangani sumber tunggal, yaitu pengguna, maka Anda masih dapat memberi nama url / pengguna.
Dengan pembantu sering kali tidak perlu memiliki pembantu untuk setiap pengontrol, dan seringkali akan ada metode pembantu Anda dapat menggunakan beberapa pengontrol ascors dan lebih baik membuang semuanya melalui pembantu aplikasi Anda, Anda dapat meletakkannya di pembantu khusus sebagai gantinya seperti misalnya layout_helper atau apapun file bernama baik lainnya.
sumber