亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Rails:如果表單返回驗證錯誤,則保持填充 JSON 表單字段

Rails:如果表單返回驗證錯誤,則保持填充 JSON 表單字段

慕田峪9158850 2023-05-11 14:42:03
我有一個創建產品的 Rails 簡單表單,表單中有以下三個字段,以便將產品與適當的類別相關聯: <div class="form-group">   <%= f.input :child_category_id, :collection => @categories.order(:name), :label_method => :name, :value_method => :id, label: "Category", :include_blank => "--Select Category--", input_html: { id: "first_dropdown" } %> </div> <div class="show_hide">   <%= f.input :subcategory_id, :collection => [] || @subcategory.order(:name), :label_method => :name, :value_method => :id, label: false, :include_blank => "--Select Category--", input_html: { id: "second_dropdown" } %> </div> <div class="show_hide_third">   <%= f.input :child_subcategory_id, :collection => [] || @child_subcategory.order(:name), :label_method => :name, :value_method => :id, label: false, input_html: { id: "third_dropdown" } %> </div>這是路線:resources :products, :path => "products/select_item", only: [:select_item] do  get :select_item, on: :collectionend這是我擁有的控制器內部的方法:def select_item  if params[:child_category_id].present?    @subcategory = Subcategory.where(child_category_id: params[:child_category_id])    render :json => @subcategory.order(:name)  end  if params[:subcategory_id].present?    @child_subcategory = ChildSubcategory.where(subcategory_id: params[:subcategory_id])    render :json => @child_subcategory.order(:name)    endend這是控制器內部的新產品和創建產品方法:def new; enddef create  @product = Product.new(product_params)    respond_to do |format|      if @product.save        format.html { redirect_to root_path }        format.json { render :new, status: :created, location: @product }        flash[:success] = "Product was successfully added."      else        format.html { render :new }        format.json { render json: @product.errors, status: :unprocessable_entity }      end    endend 一切正常,所有字段都正確填充。我遇到的唯一問題是,當表單再次呈現時,由于驗證錯誤,JSON 字段顯示為空,即使它們已正確填充。即使表單返回驗證錯誤,我如何保持填充 JSON 表單字段?
查看完整描述

1 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

問題是在頁面加載時,您的下拉列表中沒有可供選擇的選項;因此表單無法選擇正確的值。您需要像這樣更新您的控制器:


def create

  @product = Product.new(product_params)

    respond_to do |format|

      if @product.save

        format.html { redirect_to root_path }

        format.json { render :new, status: :created, location: @product }

        flash[:success] = "Product was successfully added."

      else

        @categories = Category.all.order(:name)

        @subcategory = Subcategory.where(child_category_id: @product.child_category_id).order(:name)

        @child_subcategory = ChildSubcategory.where(subcategory_id: @product.subcategory_id).order(:name)

        format.html { render :new }

        format.json { render json: @product.errors, status: :unprocessable_entity }

      end

    end

end


查看完整回答
反對 回復 2023-05-11
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號