Форма объекта строительства с рельсами 3 - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть форма редактирования, которая должна обновлять модели бронирования, b_equipments и b_menus соответственно:

= form_for :booking, :url => "", :html => {:id => "edit_menu_form"} do |form|

    .formsection.f2.x

     %p.x
        = label :booking, :serving_time, "Serving Time (hh:mm)"
        = form.text_field :serving_time



= form.submit "Update"



class BookingsController < ApplicationController

def update
    @booking = Booking.find_by_id(params[:id])
    # debugger
    #  puts "========\n\n\n this room #{@booking} is being updated \n\n\n======="
    # puts "========\n\n\n#{@booking.update_attributes(params[:booking])} \n\n\n======="
    @room = Room.find_by_id(@booking.room_id)
    @bookings = []
    @bookings << Booking.find(@booking)

    @booking_ids = Booking.find_bookings_ids(@bookings).join(",")
    #debugger

    puts "========\n\n\n#{@booking} \n\n\n======="
    if @booking.update_attributes(params[:booking])
      params[:next] = "Next"
      flash.now[:notice] = 'Booking was successfully updated.'
      #@booking = @booking
      render :action => :edit
    else
      flash.now[:error] = 'Failed to update booking'
      render :action => :edit
    end
 #   Rails.logger.info("========\n\n\ PARAMS: \n\n\n======
    #   #{params.inspect} \n\n\n======")
  end




class Booking < ActiveRecord::Base
  has_many :b_equipments

  has_many :b_menus

  end

На данный момент эта форма состоит из нескольких полей из трех моделей (booking, b_equipments и b_menus), но исходя из фона Java, я хотел бы составить или объединить все атрибуты в модель бронирования в моем методе обновления booking_controller. ... но мне не хватает опыта работы с рельсами, чтобы это сделать.

СПАСИБО ЗА ПРЕДЕЛА

1 Ответ

1 голос
/ 01 апреля 2011

Извините, это не Java.Когда ruby ​​содержит объект базы данных, вы сможете передавать атрибуты только этому объекту.

Казалось бы, вы делаете это слишком сложным.В модели у вас есть has_many :b_equipments & has_many :b_menus, так что если вы хотите добавить информацию к этим объектам, связанным с вашим @booking объектом, вы можете сделать что-то вроде

arr_of_menus = @booking.b_menus arr_of_menus[0].attribute = params[:menu_thing1] или arr_of_menus = @booking.b_menus arr_of_menus[0].update_attributes(params[:menu_thing1]) Вы высоко цените Ruby on Rails, но даже он может ожидать только атрибуты, связанные с базой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...