【问题标题】:Getting Values from Database in Ruby on Rails在 Ruby on Rails 中从数据库中获取值
【发布时间】:2014-05-03 02:27:54
【问题描述】:

我有一个简单的疑问。 我有两个下拉字段,一个用于州,另一个用于城市。我从我的数据库中加载这两个,其中有两个名称为州和城市的表。另外,当我选择一个州时,城市也会相应地改变,因为我也写了一个 jquery 代码。 这就是我将所有状态加载到我的选择标签中的方式

<%= jl.select :state_id , State.all.map{|j| [j[:name], j[:id]]}, {class: 'select2'} %>        

我想要的是当我最初加载该页面时,我不希望我的城市字段为空白。我希望它是一个下拉列表,其中包含与某些特定 state_id 相对应的城市。 那么我的城市选择标签应该如何看。 City 表包含 name、id 和 state_id。

【问题讨论】:

  • 获取您的第一个州的所有城市,然后设置到下拉列表中。但更好的方法是通过 ajax。

标签: jquery mysql ruby-on-rails ruby


【解决方案1】:

将 id 添加到您的状态下拉列表中

<%= jl.select :state_id , State.all.map{|j| [j[:name], j[:id]]}, {class: 'select2',id:'states_dropdown'} %>  

那么您的城市下拉菜单应如下所示:

<%= jl.select :city_id , City.where(:state_id=> "specific_id").map{|j| [j[:name], j[:id]]}, {class: 'select2'} %> 

并将其添加到您的咖啡脚本文件中

$("#states_dropdown").change ->
        $.ajax
            url: '/category/childrens'
            type: 'GET'
            data : 
                state_id: $(this).val()
            success: (data, status, response) ->
                #update cities dropdown
            error: ->
                # Hard error

【讨论】:

  • 有什么方法可以获取从 job_location 表中存储的 state_id 的值。就像我写 p job.job_locations.first 我得到像 # 在控制台中。我想单独提取那个 state_id
  • 这是你要求的 job.job_locations.first.state_id 还是我误会你了?
  • 是的,几乎所有人都说了相同的答案.. 但是当我把类似 undefined method `state_id' for nil:NilClass
  • 这意味着job.job_locations是一个空数组
  • 但是我写了 p job.job_locations.first 后得到的输出呢?
【解决方案2】:

您应该在加载时编写代码。

var cities_obj_arr = <%= @cities.to_json %>;

$(document).on('change', "#state_select_box", function(){
  var state_id = $(this).val();
  var str_option = '';
  $.each(cities_obj_arr, function(index, city_obj){
     if(state_id == city_obj['city']['state_id']){
       str_option = str_option + "<option value='"+city_obj['city']['name']+"'">"+city_obj['city']['name']+"</option>"; /*city_obj['city']['name'] city is object name for cities*/
     }
  });
  $(this).html(str_opotion);
});

请看一下图片,它会帮助更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多