簡體   English   中英

提交之前,Rails表單驗證出現在頁面加載中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM