代替预填充字段,我得到[[Yes],true]:Array的未定义方法`name':> [

问题描述 投票:0回答:1
[当我要编辑表单或出现验证错误时,我无法预填写关联字段。

  • 如果我为名称添加label_method,则会收到错误消息undefined method `name' for ["Yes", true]:Array

  • 或者,当我删除label_method时,表单字段仅显示

    'Yes'

  • ,而不是字段名称(“ room”的名称。new.js.erb

$("#dynamic-rooms").empty(); <% @rooms.each do |acc| %> $("#dynamic-rooms").append('<option value="<%= acc.id %>"><%= acc.name %></option>') <% end %>

form.html.erb

<%= simple_form_for [@hotel, @reservation] do |f|%> <%= f.simple_fields_for :rooms do |room| %> <%= room.input :room_type, collection: @room_type_list, prompt: "Select type of room", label:false, input_html:{ id: "room_type" }%> <% end %> <%= f.association :room, collection: @rooms, input_html:{ value: @rooms.object_id, id: "dynamic-rooms" } %> <% end %> <% end %> <script> $(document).ready(function(){ var room_type = $("#room_type").val(); $.ajax({ url: "/hotels/<%= @hotel.id %>/reservations/new", method: "GET", dataType: "json", data: {room_type: room_type}, error: function (xhr, status, error) { console.error('AJAX Error: ' + status + error); }, success: function (response) { } }); }); $(document).on("change", "#room_type", function(){ var room_type = $("#room_type").val(); $.ajax({ url: "/hotels/<%= @hotel.id %>/reservations/new", method: "GET", dataType: "json", data: {room_type: room_type}, error: function (xhr, status, error) { console.error('AJAX Error: ' + status + error); }, success: function (response) { } }); }); </script>

控制器

class ReservationsController < ApplicationController # skip_before_action :authenticate_user! def new @user = current_user @hotel = Hotel.find(params[:hotel_id]) @reservation = Reservation.new @room_type_list = @hotel.room_types @rooms = [] if params[:room_type].present? @rooms = RoomType.find(params[:room_type]).rooms end if request.xhr? respond_to do |format| format.json { render json: {rooms: @rooms} } format.js end end authorize @reservation end def create @user = current_user @hotel = Hotel.find(params[:hotel_id]) @reservation = Reservation.new(reservation_params) @reservation.hotel = @hotel authorize @reservation if @reservation.save redirect_to hotel_path(@hotel) else # @room_type = @reservation.room.room_type @room_type_list = @hotel.room_types # @room = @reservation.room render 'new' end end private def reservation_params params.require(:reservation).permit(:room_id, :arrival, :departure, :payment, :reservation_contact_id, option_ids:[], reservation_contact_attributes: [:id, :first_name, :last_name, :zipcode, :city, :street, :street_number], rooms_attributes: [:id,:name, :room_type_id, room_types_attributes: [:id, :name]]) end end

[当我要编辑表单或出现验证错误时,我无法预填写关联字段。如果我为名称添加label_method,则会收到错误消息未定义的方法“名称”,表示...
javascript jquery ruby-on-rails activerecord simple-form
1个回答
0
投票
错误表示此代码
© www.soinside.com 2019 - 2024. All rights reserved.