422 response'u formu bozuyor

Öncelikle herkese iyi forumlar.
Geliştirdiğim rails uygulamamda kullanıcının gerekli verileri yanlış girdiğinde uyarıcak bir form yapmaya çalışıyorum. new methodu html dosyasını render ettiğinde bir sıkıntı olmuyor ama ne zaman kayıt işleminde bir hata meydana gelse form yeniden ekrana basılsa bazı alanlarda bozulma oluyor.
Normali şu şekilde:

Gönder butonuna basıldıktan sonra şu şekilde kalıyor:

project_controller.rb:

def create
		puts get_params
		@project = Project.new(get_params(:title,:header,:body,:url,:end_date,:start_date))
		unless @project.save
			puts "hata meydana geldi"
			puts @project.errors.full_messages
			@categories = Category.pluck(:name)
			render :new, status: 422
		end
	end

new.html.erb:

<div class="row mx-3">
							<div class="col-sm-4 py-2 text-start">
								<div class="form-floating mb-3">
									<%= form.text_field(:title,class:"form-control",id:"titleElement",required:"")%>
								  	<label for="titleElement">Title</label>
								</div>
							</div>
							<div class="col-sm-4 py-2 text-start">
								<div class="form-floating mb-3">
									<%= form.text_field(:header,class:"form-control",id:"headerElement",required:"")%>
								  	<label for="headerElement">Header</label>
								</div>
							</div>
							<div class="col-sm-4 py-2 text-start">
								<div class="form-floating mb-3">
									<%= form.url_field(:url,class:"form-control",id:"floatingInput3",required:"")%>
								  	<label for="floatingInput3">Url</label>
								</div>
							</div>
						</div>

Yardımcı olucak arkadaşlara şimdiden teşekkürler.

Sanki CSS ile ilgili bir konu gibi duruyor. Class’ları vs kaldırıp deneme şansın oldu mu?

1 Like

Denedim hocam yine aynı sonucu verdi.
Hocam rails validasyon sonrası forma bazı html tagları ekliyor sebebi bu olabilir mi ?

<div class="form_with_errors">
    ...
</div>

Hmm. Olabilir denemek lazım. Ezbere bir şey diyemiyorum şu an. Inline olarak label koyduğun için hata da bi şekilde onun yakınlarına koymaya çalıştığı için oluyor olabilir.

1 Like

Uzun uğraşlar sonucu hatanın cevabını şurada buldum:

config/application.rb dosyasını şu şekilde düzenledim ve sorunsuz çalıştı:

config.action_view.field_error_proc = Proc.new { |html_tag, instance| 
      html_tag.gsub("form-control","form-control is-invalid").html_safe
    }

Önceki hali:

config.action_view.field_error_proc = Proc.new { |html_tag, instance| 
  "<div class=\"field_with_errors\">#{html_tag}</div>".html_safe
}
1 Like