Rails 如何获取 select 中当前选中项的 value

mumu · January 04, 2016 · Last by yaocanwei replied at January 04, 2016 · 2445 hits

模型关系如下

class Room < ActiveRecord::Base
  has_many :equipments
end

class Equipment < ActiveRecord::Base
  belongs_to :room
end

如下图所示,希望在选择检查诊室后,根据当前选择诊室获取检查设备信息

如何获取 select 中当前选中项的 value?

<%= select_tag :room_id, options_for_select(Dept.find_by(dept_id:@deptid).rooms.collect { |room| [room.room_name, room.id]}) %>

params[:room_id]

params[xxxx][:room_id],xxxx 是 form_tag 里面指定的第一个参数名

参考这个帖子: https://ruby-china.org/topics/28341 。应该可以帮到你。

另外,options_for_select(Dept.find_by(dept_id:@deptid).rooms.collect { |room| [room.room_name, room.id]}) 感觉这类查询数据库的操作不应该出现在 view 里。

这个不就是叫级联查询么。最简单的就是你把所有的组合都组成一个 json 然后前端渲染。

hi,虽然具体代码没有看到,个人觉得思路可以这么入手:

<%= select_tag :room_id, options_for_select(Dept.find_by(dept_id:@deptid).rooms.collect { |room| [room.room_name, room.id]}), :onclick => "javascript: yourFunction();" %>
function yourFunction(){
    var $form = $('#form_id');
    $("#room_id").change(function(){
        $("#equipment").remove();
        $form.submit();
    })
}

然后再根据 params[:room_id] 在你的 controller 以及 model 中获取相应的检查设备信息; 另外正如@qinfanpeng 说的,不应该将数据库查询操作放在 view 中。

You need to Sign in before reply, if you don't have an account, please Sign up first.