我想驗證data
模型,該模型爲belongs_to
a project
模型。驗證的工作原理是,如果驗證失敗,數據不會被保存。Rails在窗體上顯示驗證消息
但是,我無法獲得data
驗證以顯示新窗體上驗證的正確錯誤消息。
如何在data
表單上顯示正確的錯誤驗證消息?
表URL http://localhost:9080/projects/7/data/new
數據模型:
class Datum < ApplicationRecord
belongs_to :project
validates :supplier, :item, :presence => true #need this to display error message on data form
end
項目型號:
class Project < ApplicationRecord
belongs_to :user
validates :name,:presence => true #works perfectly, displays error message on project form
has_many :data, dependent: :destroy
accepts_nested_attributes_for :data
end
數據控制器
def create
@datum = Datum.new(datum_params)
@datum.project_id = params[:project_id]
respond_to do |format|
if @datum.save
format.html { redirect_to project_data_path, notice: 'Created.' }
else
format.html {#do I need something here to redisplay the form with the errors }
end
end
end
數據表:
<%= bootstrap_form_for([@project, @project.data.build]) do |f| %>
<div class="field">
<%= f.text_field :supplier %>
</div>
<div class="field">
<%= f.text_field :item %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
編輯 我到了一個解決方案最接近的是,如果該對象不保存:
format.html { redirect_to new_project_datum_path, alert: @datum.errors }
但這ISN這正是我所需要的。因爲它只是返回錯誤消息,並且空字段使用戶必須再次填寫所有字段。 由於某些原因重定向工作,但render 'new'
不起作用。
你知道我試過了,但它會拋出: 'nil:NilClass'的未定義方法'data',並突出顯示:'<%= bootstrap_form_for([@project,@project.data。build])do | f | %>' – HoosierCoder
我在回答中添加了更多詳細信息 – kriskova
當我在您的編輯中加入:#<#:0x007fc5ec4b44c0>的未定義方法'data_path',並突出顯示:'<%= bootstrap_form_for([@ project,@ datum])do | f | %>' –
HoosierCoder