Ruby on Rails -in coffeescript如何访问从控制器返回的数据

时间:2014-10-27 01:21:56

标签: ruby-on-rails coffeescript

Ruby-on-rails应用程序使用Javascript / coffee访问返回的数据,并在视图中重新显示为下拉列表。

应用/资产/ Javascript角

$('document').ready ->
  if $('#x_eval_assum').length == 1
   $('#x_eval_assum')
  # evaluation assumption is saved
      .submit (event) ->
        event.preventDefault()
        data = $("#x_eval_assum").serialize()
        user_save_name = data.user_save_name
        drill_id = $('.form.assumption').attr('data-drillid') 
        $.post "/drills/#{drill_id}/discovery_target_saved.json", data, (res)-> 
          console.log res  # response shown below

          # line causing errors - how do I access whats in res
          for assumption in res.assumptions
             # $(select).append(<option val="id" 

使用开发者 - &gt;用于查看从控制器

返回到coffeescript的res(例如数据)的工具
data: Array[12]
    0: Object
        id: "c-22"
        name: "Gas, ADO"
        index: 0
        ...
    1: Object
    ...

应用程序/控制器/钻

...
  def discovery_target_saved
    @evaluation_assumption = EvaluationAssumption.new(evaluation_assumption_params)
    load_evaluation_assumption_selections
    render json: {data: @selections}
  end

...

显示发现目标的视图部分

...
    <td id="discovery_targets" data-targets="<%= @probability_json %>">  
             <%= select("name", "id", 
                 @selections.collect {|r| [ r["name"], r["id"] ] },
                 { :include_blank => false })  %>
    </td>

谢谢 - 皮埃尔

1 个答案:

答案 0 :(得分:1)

看看你的控制器:

render json: {data: @selections}

这意味着您将返回一个包含data键的Hash,其值为某个数组。然后看一下控制台中的内容:

data: Array[12]
    0: Object
        id: "c-22"
        name: "Gas, ADO"
        index: 0
     ...

这意味着res.data是一个包含12个项目的数组,每个项目都有idname,...属性。这意味着你想要:

for assumption in res.data
  ...

访问数据。