[英]Rails form validation appears on page load before submit
好吧,我必須缺少一些簡單的東西。
我正在使用部分“ /shared/_error_messages.html.erb”進行處理
<%= render 'shared/error_messages', object: f.object %>
在我的表單中(一個用於添加程序,一個用於添加指標)。
當我導航到任何形式(/ programs / new和metrics / new)時,驗證將在頁面加載時顯示。
programs_controller和metrics_controller在結構上是相同的(在metrics_controller中將@programs交換為@metrics):
#programs_controller.rb
def new
@programs = Program.new(params[:name])
if @programs.save
flash[:success] = "Program saved"
redirect_to "/program"
else
render 'new'
end
end
任何想法可能是什么原因造成的?
這是局部的:
<% if object.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(object.errors.count, "error") %>.
</div>
<ul>
<% object.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
我不知道錯誤是什么,但是問題是您正在將對象保存在new
操作中。 保存會產生對象錯誤; 這就是為什么你看到他們。
以RESTful
方式,新操作應僅實例化模型並將對象傳遞給表單。 表單會將其提交給create
動作; 您應該在其中保存對象並檢查錯誤的位置。
就像是:
#programs_controller.rb
def new
@programs = Program.new
end
def create
@programs = Program.new(params[:program])
if @programs.save
# success
else
# failure
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.