【发布时间】:2016-08-11 18:28:44
【问题描述】:
在我的 Rails 应用程序中,我有 3 个模型 Kid、Classroom 和 Teacher。基本上,我的视图中有一个表格,列出了所有教室,当我点击一个按钮时,我希望弹出一个模式,列出教师和学生 分配到那个教室,因为有一个关联,Classroom has_many Teachers 和 has_many Kids。我已经为模态准备了代码,我已经在下面复制了它,但是我很难将特定的 classroom 对象限定为模态。感谢所有帮助!
<div class="modal fade" id="showClassModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 id="showClassroomHeader"></h4>
</div>
<div class="modal-body">
<h4>Teachers Assigned</h4>
<ol>
<% @classroom.teachers.each do |teacher| %>
<li><%= teacher.first_name %> <%= teacher.last_name %></li>
<% end %>
</ol>
<br>
<h4>Students</h4>
<ol>
<% @classroom.kids.each do |kid| %>
<li><%= kid.first_name %> <%= kid.last_name %></li>
<% end %>
</ol>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<% if current_user.admin? %>
<button class="btn btn-warning" id="editClassroomBtn">Edit</button>
<% end %>
</div>
</div>
</div>
编辑:
教室控制器:
class ClassroomsController < ApplicationController
before_action :set_classroom, only: [:show, :edit, :update, :destroy]
# GET /classrooms
# GET /classrooms.json
def index
@user ||= current_user
if current_user.admin?
@classrooms = Classroom.all
else
@classrooms = @user.classrooms.all
end
end
# GET /classrooms/1
# GET /classrooms/1.json
def show
classroom = Classroom.find(params[:id])
render :text => classroom.class_desc
end
# GET /classrooms/new
def new
@classroom = Classroom.new
end
# GET /classrooms/1/edit
def edit
end
# POST /classrooms
# POST /classrooms.json
def create
@classroom = Classroom.new(classroom_params)
classroom.user = current_user
respond_to do |format|
if @classroom.save
format.html { redirect_to root_url, notice: 'Classroom was successfully created.' }
format.json { render :show, status: :created, location: @classroom }
else
format.html { render :new }
format.json { render json: @classroom.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /classrooms/1
# PATCH/PUT /classrooms/1.json
def update
respond_to do |format|
if @classroom.update(classroom_params)
format.html { redirect_to root_url, notice: 'Classroom was successfully updated.' }
format.json { render :show, status: :ok, location: @classroom }
else
format.html { render :edit }
format.json { render json: @classroom.errors, status: :unprocessable_entity }
end
end
end
# DELETE /classrooms/1
# DELETE /classrooms/1.json
def destroy
@classroom.destroy
respond_to do |format|
format.html { redirect_to classrooms_url, notice: 'Classroom was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_classroom
@classroom = Classroom.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def classroom_params
params.require(:classroom).permit(:class_name, :class_desc, :capacity, :start_range, :end_range)
end
end
Routes.rb:
Rails.application.routes.draw do
resources :rationales
resources :teachers
resources :classrooms
resources :kids
devise_for :users, :skip => [:sessions]
as :user do
get 'login' => "devise/sessions#new", :as => :new_user_session
post 'login' => 'devise/sessions#create', :as => :user_session
delete 'logout' => 'devise/sessions#destroy', :as => :destroy_user_session
end
root :to => 'kids#index'
resources :kids do
get 'discharge', on: :member
end
resources :kids do
get 'restore', on: :member
end
end
【问题讨论】:
-
你的控制器和路由能不能帮到你
-
@mrvncaragay 我已经添加了我的教室控制器和路由文件
-
我猜你正在打印索引中的所有
@classrooms,每个都有按钮来调用模式? -
@mrvncaragay 是的,每个都有按钮也调用模态
-
那么我是你的观点,当你渲染按钮时,像这样传递局部变量
<%= render 'classrooms/classroommodal', classroom: classroom %>
标签: ruby-on-rails twitter-bootstrap