Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails中的嵌套表单验证_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails中的嵌套表单验证

Ruby on rails Rails中的嵌套表单验证,ruby-on-rails,Ruby On Rails,我有以下代码: <%= form_with(model: [@lawsuit, @lawsuit.suits.build]) do |f| %> <fieldset> <legend>New Suit</legend> </fieldset> <br /> <div class="form-group"> <%= f.label :claim %> <%

我有以下代码:

<%= form_with(model: [@lawsuit, @lawsuit.suits.build]) do |f| %>

  <fieldset>
    <legend>New Suit</legend>
  </fieldset>
  <br />
  <div class="form-group">
    <%= f.label :claim %>
    <%= f.text_field :claim, class: 'form-control', placeholder: 'Name' %>
  </div>
  <div class="form-group">
    <%= f.label :sentence %>
    <%= f.text_area :sentence, class: 'form-control', placeholder: 'Sentence' %>
  </div>
  <div class="form-group">
    <%= f.label :result %>
    <%= f.select(:result, [['Not Favorable', false], ['Favorable', true]], {}, {class: 'form-control'}) %>
  </div>

  <%= button_tag type: 'submit', class: "btn btn-primary float-right" do %>
    <i class="fa fa-plus" aria-hidden="true"></i>
    Create
  <% end %>
<% end %>

新西装

创造
如何显示诉讼的错误列表(这是@course的嵌套属性)并在屏幕上显示其错误?我已经对模型进行了验证。模型是这样的:

class Suit < ApplicationRecord
  belongs_to :lawsuit

  validates_presence_of :claim, :sentence
end
职业套装
我的控制器如下所示

该过程在控制器中启动。在那里我构建了@suit(在表单中使用)

西服控制员:

class SuitsController < ApplicationController
  before_action :set_suit, only: [:show]

  def new
  end

  def create
    Rails.logger.info "=====================SUIT CREATION"
    @lawsuit = Lawsuit.find(params[:lawsuit_id])
    @suit = @lawsuit.suits.build(suit_params)
    Rails.logger.info "AISHA #{@suit.errors.any?}"
    # @suit = @lawsuit.suits.new(suit_params)

    if @suit.save
      flash[:notice] = "Suit created successfully"
      redirect_to lawsuit_path(@lawsuit)
    else
      Rails.logger.info "AISHA #{@suit.valid?}"
      flash[:alert] = "Something went wrong"
      redirect_to lawsuit_path(@lawsuit)
    end
  end
class SuitsController
诉讼控制人

class LawsuitsController < ApplicationController
    before_action :set_lawsuit, only: [:show]

  def index
      @lawsuits = Lawsuit.paginate(:page => params[:page], :per_page => 8)
    end

    def show
        begin
            @blob = Lawsuit.get_blob_for_document(@lawsuit.document_number)[1]
        rescue
            @blob = "Cannot load document!"
            flash[:error] = "Cannot load document!"
        end

        @lawsuit = Lawsuit.find(params[:id])
        @suit = @lawsuit.suits.build
    end

    private
        def set_lawsuit
            @lawsuit = Lawsuit.find(params[:id])
        end

        def lawsuit_params
            params.require(:lawsuit).permit(:document_number, :region, :court, :noted)
        end
end
class LawsuitsControllerparams[:page],:per_page=>8)
终止
def秀
开始
@blob=诉讼。获取文件的\u blob\u(@tustion.document\u number)[1]
营救
@blob=“无法加载文档!”
flash[:error]=“无法加载文档!”
终止
@诉讼=诉讼.查找(params[:id])
@suit=@justice.suits.build
终止
私有的
def set_诉讼
@诉讼=诉讼.查找(params[:id])
终止
定义诉讼参数
参数要求(:诉讼)。许可证(:文件编号,:地区,:法院,:注明)
终止
终止

修改视图如下

<%= form_with(model: [:lawsuit, @suit]) do |f| %>

  <fieldset>
    <legend>New Suit</legend>
  </fieldset>
  <br />

  <% if @suit.errors.any? %>
    <div id="error_explanation">
      <h2>
        <%= pluralize(@suit.errors.count, "error") %>
        <%= "prohibited this suit from being saved:" %>
      </h2>
      <ul></ul>
      <% @suit.errors.full_messages.each do |message| %>
        <li>
          <%= message %>
        </li>
      <% end %>
    </div>
  <% end %>


  <div class="form-group">
    <%= f.label :claim %>
    <%= f.text_field :claim, class: 'form-control', placeholder: 'Name' %>
  </div>
  <div class="form-group">
    <%= f.label :sentence %>
    <%= f.text_area :sentence, class: 'form-control', placeholder: 'Sentence' %>
  </div>
  <div class="form-group">
    <%= f.label :result %>
    <%= f.select(:result, [['Not Favorable', false], ['Favorable', true]], {}, {class: 'form-control'}) %>
  </div>

  <%= button_tag type: 'submit', class: "btn btn-primary float-right" do %>
    <i class="fa fa-plus" aria-hidden="true"></i>
    Create
  <% end %>
<% end %>
你应该是

class SuitsController < ApplicationController
  before_action :set_suit, only: [:show]

  def new
  end

  def create

    @lawsuit = Lawsuit.find(params[:lawsuit_id])
    @suit = @lawsuit.suits.build(suit_params)

    if @suit.save
      flash[:notice] = "Suit created successfully"
      redirect_to lawsuit_path(@lawsuit)
    else
      render :form
    end
  end
class SuitsController

若你们想显示flash消息,那个么你们应该在视图中写下面的代码

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>"><%= value %></div>
<% end %>


这很奇怪,因为如果我在rails控制台上构建了一个suit,然后像suit=justice.last.suits.build一样构建并检查是否有任何错误,结果是真的。我认为这与重定向有关。
<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>"><%= value %></div>
<% end %>