带有Rails 4的动态选择框
Dynamic select boxes with Rails 4
我试图制作动态选择框(一个框在另一个框中选择信息),但遇到了一些问题。
路线.rb
get "students/new/update_tutors" => 'students#update_tutors', as: 'update_tutors'
students_controller.rb
def update_tutors
admin = Administrators.find(params[:administrator_id])
#@tutors = admin.tutors.map{|t| [t.info.name, t.id]}
debugger
@tutors = Tutor.where(administrator_id: params[:administrator_id])
respond_to do |format|
format.js
end
end
def new
@user = Student.new
@is_super_adm = is_super?
if @is_super_adm
@tutors = Tutor.all.map { |t| [t.info.name, t.id] }
@admins = Administrator.where(is_super: false).map { |adm| [adm.info.name, adm.id] }
else
@tutors = Tutor.where(administrator_id: session[:type_id]).map { |t| [t.info.name, t.id] }
end
end
new.html.erb
<%= form_for @user, remote: true do |student_form| %>
<!--....-->
<%= label_tag :administrator_id, "Choose local administrator" %><br/>
<%= select_tag :administrator_id, options_for_select(@admins), {id: 'administrator_selection'} %><br/>
<!--....-->
<%= student_form.label :tutor_id, "Choose Tutor" %><br/>
<%= student_form.select :tutor_id, options_for_select(@tutors), {} , {id: 'tutor_selection'}%>
students.coffee
$ ->
$(document).on 'change', '#administrator_selection', (evt) ->
$.ajax 'update_tutors',
type: 'GET'
dataType: 'script'
data: {
administrator_id: $("#administrator_selection option:selected").val()
}
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Dynamic country select OK!")
update_tutors.coffee
$("#tutor_selection").empty()
.append("<%= escape_javascript(render(:partial => @tutors)) %>")
我尝试将alert('msg')
插入到students.js.coffee
中,事件成功了,所以我确信问题出在$.ajax
中,但这是我第一次使用ajax,我找不到错误。
更新
我想问题出在路由上,但我不明白为什么它调用students/update_tutor
而不是students/new/update_tutor
日志
已开始GET"/学生/update_tutors?administrator_id=3&_=1459590346845";对于127.0.0.1,2016年4月2日11:47:01+0200
StudentsController处理#显示为JS
参数:{"administrator_id"="gt;"3&","_&"="gt"1459590346845","id&"="gt;"update_tutors"}
固定
我将$.ajax
中的update_tutors
更改为'new/update_tutors'
,并将Administrators.find(...)
中的update_tutors方法中的错误修复为Administrator.find(...)
。
Change your Ajax request as per given below,
$ ->
$(document).on 'change', '#administrator_selection', (evt) ->
$.ajax '<%= update_tutors_path %>',
type: 'GET'
dataType: 'script'
data: {
administrator_id: $("#administrator_selection option:selected").val()
}
error: (jqXHR, textStatus, errorThrown) ->
console.log("AJAX Error: #{textStatus}")
success: (data, textStatus, jqXHR) ->
console.log("Dynamic country select OK!")
相关文章:
- d3基于用户选择动态更新节点
- JQuery--无法选择动态附加到表中的对象
- 如何根据用户选择动态更改多个复选框的编号
- JavaScript确认何时在表单中选择动态HTML字段
- 使用JQuery通过下拉选择动态更改PHP值
- 使用用户选择动态更新页面
- 在jquery中选择动态创建的元素
- 选择动态添加表单的元素
- 根据<选择>动态创建的表单不起作用
- j查询选择动态添加的表行的列数据
- Dojo 筛选选择 - 动态将下拉列表中的特定选项标记为禁用(灰显且不可选择)
- 选择动态创建的 html 元素而不单击
- 如何运行函数以选择动态添加
- Jquery 选择动态 ID
- 使用 Knockoutjs 根据用户的语言选择动态调整页面内容
- jQuery 选择动态创建的 html 元素
- 如何在JQuery中从Gallery View中选择动态图像
- 如何从AngularJS指令中选择动态生成的元素
- 选择动态创建的表中高亮显示的行,onclick事件
- 按类名选择动态更改的元素