Rails:如何从嵌套模型中存储和检索数据

时间:2017-03-06 06:57:22

标签: ruby-on-rails sqlite has-many

我正在使用模型开发一个带有模型的项目

class Party < ApplicationRecord
    has_many :bills
end

class Bill < ApplicationRecord
    belongs_to :party
    has_many :details
end

class Detail< ApplicationRecord
    belongs_to :bill
end

我的控制器类

class PartiesController < ApplicationController
        before_action :set_party, only: [:show, :edit, :update, :destroy]

        def index
            @parties = Party.all
        end

        def show
            @parties = Party.find(params[:id])
        end


        def new
          @party = Party.new
          @bill = Bill.new
        end


        def edit
            @parties = Party.find(params[:id])
        end

        def create
          @party = Party.new(party_params)
          @bill = Bill.new

          respond_to do |format|
            if @party.save
              format.html { redirect_to @party, notice: 'Party was           successfully created.' }
              format.json { render :show, status: :created, location: @party }
            else
              format.html { render :new }
              format.json { render json: @party.errors, status: :unprocessable_entity }
            end
          end
        end

        def update
          respond_to do |format|
            if @party.update(party_params)
              format.html { redirect_to @party, notice: 'Party was           successfully updated.' }
              format.json { render :show, status: :ok, location: @party }
            else
              format.html { render :edit }
              format.json { render json: @party.errors, status:           :unprocessable_entity }
            end
          end
        end


        def destroy
          @party.destroy
          respond_to do |format|
            format.html { redirect_to parties_url, notice: 'Party was successfully destroyed.' }
            format.json { head :no_content }
          end
        end

        private

          def set_party
            @party = Party.find(params[:id])
          end
         def party_params
             params.require(:party).permit(:name, :address)
          end
      end

现在我想存储Detail类的参数,并在视图中显示它。

  1. 我应该使用Party控制器吗?
  2. 在这种情况下如何定义路线?我现有的路线是:

    Rails.application.routes.draw do
        root 'parties#index'
        resources :parties do
        resources :bills
       end
    end
    
  3. 对于课程详情,我该如何定义路线?

    1. 我希望将这些视图显示为独立于用户。例如 如果用户点击特定帐单,他就可以向帐单
    2. 添加详细信息

      提前致谢

1 个答案:

答案 0 :(得分:0)

  1. 要存储Detail参数,您必须使用DetailsController。使用PartiesController不会是“Rails Way”e.q。好办法。

  2. 您可以像这样定义您的路线:

  3. 的routes.rb

    Rails.application.routes.draw do
      root 'parties#index'
      resources :parties do
        resources :bills do
          resources :details
        end
      end
    end
    
    1. 您可以为details生成导轨支架,它将满足您当前的需求。这些观点将是“独立的”等等。