ActionController::UnknownFormat di Rancangan::RegistrationController#new. .pengguna ditambahkan di URL

Saya telah bekerja dengan rancangan sebelumnya tetapi saya tidak mengerti kesalahan apa yang saya lakukan kali ini. Semua pertanyaan terkait juga tidak menjelaskannya. Segera setelah saya mengklik tautan Daftar, saya mendapatkan kesalahan sebagai berikut

ActionController::UnknownFormat in Devise::RegistrationsController#new

di baris nomor 207

(options.delete(:responder) || self.class.responder).call(self, resources, options)
  else
207: raise ActionController::UnknownFormat
  end
end

Namun, jika saya mengubah tautan saya dari

  <%= link_to "Sign up", new_user_registration_path(resource_name) %>

to

  <%= link_to "Sign up", new_user_registration_path %>

halaman pendaftaran dimuat dengan baik. Hal lain yang perlu diperhatikan adalah ketika saya mengeklik tautan pendaftaran, url saya terlihat seperti http://localhost:3000/users/sign_up.user dan bukan seperti http://localhost:3000/users/sign_up yang seharusnya demikian.

Saya merujuk Rails 4 Rancangan 3.1.1 ActionController::UnknownFormat di Rancangan ::RegistrationController#new dan menemukan ide untuk menghapus resource_name dan tampaknya berhasil. Namun, saya tidak mengerti alasannya. Terima kasih sebelumnya


person Aakanksha    schedule 25.03.2016    source sumber


Jawaban (1)


Saat Anda meneruskan sumber daya ke metode jalur seperti new_user_registration_path, Rails akan mencoba merutekan ke tindakan untuk sumber daya tersebut dan menginterpolasinya ke dalam rute. Karena Anda tidak memiliki rute yang memiliki pencocokan untuk sumber daya yang ditentukan, Rails hanya akan menambahkan .<resource.to_param> ke akhir URL saja. Jelas ini bukan yang Anda inginkan, karena mendaftar tidak memerlukan sumber daya.

Alasan Anda mendapatkan pengecualian khusus ini adalah karena perangkat mencoba merespons beberapa jenis respons (html, json, xml, dll), perangkat tersebut menguraikan .user sebagai jenis yang ingin Anda terima, sehingga terjadi kesalahan format yang tidak diketahui.

person tpbowden    schedule 25.03.2016
comment
saya tidak mengerti. New_user_registration_path saya menunjuk ke registrasi/baru lalu mengapa tidak cocok dengan jalurnya. - person Aakanksha; 25.03.2016
comment
Ya, tetapi mencoba merespons format respons .user yang tidak ada. resource_name.to_param adalah user, itulah sebabnya ia ditambahkan ke URL - person tpbowden; 25.03.2016
comment
oke.. agak masuk akal, tapi bagaimana cara memastikan bahwa aplikasi tidak mengambil resource_name.to_param? Saya minta maaf karena menanyakan pertanyaan bodoh seperti itu, tetapi mohon bersabar, saya seorang pemula di bidang Rails - person Aakanksha; 25.03.2016
comment
hanya saja, jangan berikan argumen apa pun ke metode new_user_registration_path di masa mendatang. - person tpbowden; 25.03.2016
comment
Ya, saya pikir menghapus parameter akan menyelesaikan masalah. Sekarang saya mengerti alasannya juga. Terima kasih :) - person Aakanksha; 26.03.2016