rails使用嵌套资源

时间:2016-11-04 07:32:16

标签: javascript jquery ruby-on-rails ruby

image

作为图片,我想用嵌套资源制作页面。

我的计划是

  1. 注册用户
  2. 创建游览(通过参数请求输入信息)
  3. 如果@ tour.tour_days(params)值超过1
  4. 创建日期页面,与投放到tour_day params的用户数量一样多
  5. 所以我想创建一个页面(如果1user创建第一个游览并将3放入tour_day) 本地主机:3000 /旅游/ 1 /天/ 1
    本地主机:3000 /旅游/ 1 /天/ 2
    本地主机:3000 /旅游/ 1 /天/ 3

    (如果1位用户创建第二次巡视并将2放入tour_day) 本地主机:3000 /旅游/ 2 /天/ 1
    本地主机:3000 /旅游/ 2 /天/ 2

    当用户将号码放入tour_day并点击tour_view中的提交按钮时,我想自动创建这些页面

    我已经完成了创建嵌套资源并抛出数据但我无法清楚地表达...;(

    我嵌套资源和创建额外的控制器(day_controller)的原因是我想添加推荐功能(推荐给谁无法制定时间表)... 实际上,我想制作像airbnb(创建房间流程)的页面 (我正在做正确的过程吗??)

    tour_controller

    class ToursController < ApplicationController
      before_action :set_tour, only:[:show, :edit, :update]
      before_action :authenticate_user!, except:[:show]
    
    
      def index
        @tours = current_user.tours
      end
    
      def show
      end
    
      def new
        @tour = current_user.tours.build
    
      end
    
    
      def create
        @tour = current_user.tours.build(tour_params)
    
        i = 0
        if @tour.save
          redirect_to new_tour_day_path(@tour.id, @day), notice: "Saved Your Tour Courses"
        else
          render :new
        end
      end
    
      def edit
      end
    
      def update
        if @tour.update(tour_params)
          redirect_to edit_tour_day_path(@tour.id, @day), notice: "Updated Your Tour Courses"
        else
          render :edit
        end
      end
    
      private
      def set_tour
        @tour = Tour.find(params[:id])
      end
    
      def tour_params
        params.require(:tour).permit(:tour_title, :tour_theme, :tour_summary, :tour_language, :tour_day, :tour_member, :tour_car, :tour_camera, :price)
      end
    
    end
    

    day_controller

    class DaysController < ApplicationController
      before_action :set_tour
      before_action :set_day, only: [:show, :edit, :update]
      before_action :authenticate_user!, except:[:show]
    
      def index
      end
    
      def show
      end
    
      def new
        @tour = current_user.tours.find(params[:tour_id])
        @day = @tour.days.build
      end
    
      def create
        @tour = current_user.tours.find(params[:tour_id])
        @day = @tour.days.build(day_params)
    
        if @day.save
          redirect_to edit_tour_day_path(@tour.id, @day), notice: "Saved Your Tour Courses"
        else
          render :new, notice: "Errors"
        end
      end
    
      def edit
      end
    
      def update
        if @day.update(day_params)
          redirect_to edit_tour_day_path(@day), notice: "Updated Your Tour Courses"
        else
          redner :edit
        end
      end
    
      private
    
      def set_tour
        @tour = Tour.find(params[:tour_id])
      end
    
      def set_day
        @day = Day.find(params[:id])
      end
    
      def day_params
        params.require(:day).permit(:day_number)
      end
    end
    

    tour_view(测试页)

    <div class="container">
        <%= form_for @tour, :html => { multipart: true } do |f| %>
            <div class="col-md-3 select">
                <div class="form-group">
                    <label>Maximum Tour Day</label>
                    <%= f.select :tour_day, [["1",1], ["2",2], ["3",3], ["4",4]], prompt: "Select...", class: "form-control" %>
                </div>
            </div>
            <div class="actions">
                <%= f.submit "save", class: "btn btn-primary" %>
            </div>
        <% end %>
    
    </div>
    

    day_view(测试页)

    <div class="container">
      <%= form_for [:tour, @day] do |f| %>
        <label>day_number</label>
        <%= f.text_field :schedule_, class: "form-control" %>
    
        <div class="actions">
          <%= f.submit "Save", class: "btn btn-primary"%>
        </div>
      <% end %>
    
    </div>
    
    另外

    ** 在日视图里面 我想创建日程安排 image

    当我点击图标时,表格会出现并使用ajax制作详细的旅行计划。 我怎样才能创建这个函数?


    ----
    这是我的第一个网络编程项目,我很困惑 PLZ ...给我一些(很多)帮助......

    ----
    即时通讯使用rails 5.0.0.1和rails 2.3.1

0 个答案:

没有答案