【问题标题】:converting the data to json format in rails在rails中将数据转换为json格式
【发布时间】:2011-12-28 09:42:21
【问题描述】:

我的要求是在我的 rails 应用程序中实现自动完成功能。我需要将下面控制器代码中的@testers 转换为 json 格式。

def new
  @release = Release.new
  @ic_ids = params[:ic_ids] ? params[:ic_ids] : []
  @testers = User.find_by_sql("select * from users where id in(select user_id from user_role_assignments where role_id in (select id from roles where name like 'Tester')) order by name").paginate(:page=>params[:page],:per_page=>30)   
  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @release }
  end
end

在我的视图代码中,我尝试了这个:

%td.grid.full_panels
    -table_panel "Assign Testers" do
      %table
        %th Name
        -puts "testers=#{@testers}"
        = form.label :tester_tokens, "Testers" 
        = form.text_field :tester_tokens,:class => 'autocomplete'
 :javascript
  data = #{testers.to_json} 

我的数据未定义。

请帮帮我。

谢谢, 拉姆亚。

【问题讨论】:

    标签: jquery ruby-on-rails json haml


    【解决方案1】:

    要创建 json 源,您可以将 format.json 添加到 respond_to 循环中,如下所示:

    def index
         @objects=Model.where("name LIKE ?", "%params[:q]%") || Model.all
         respond_to do |format|
              format.html # index.html.erb
              format.json { render :json => @objects.map(&:attributes) }
         end
    end
    

    如果您不想提取所有数据only 和except 选项可用。您应该可以将它用于大多数自动完成插件!

    通过添加q 数据,您将能够按给定模式划分结果。

    【讨论】:

    • 嗨大卫,非常感谢您花时间回答我。在我的情况下,@testers 已经使用 sql 查询从不同的表中提取出来。所以请帮助我了解如何以上述格式使用它。还帮助如何在 .js 文件中使用它?
    • 另外请告诉我在哪里传递“q”参数
    • 您还可以渲染任何其他数据,只需将@objects 替换为应使用json 渲染的任何其他对象数组。如果您只是简单地提取这些东西而没有过滤的可能性 qisnt 需要!
    • 嗨,大卫,我将代码更改为 @users=User.all respond_to do |format| format.html # index.html.erb format.json { render :json => @users.map(&:attributes) } 请帮助我如何在 jquery 文件 end 中使用这个 json
    【解决方案2】:

    为什么是data =?据我所知,这是无效的 javascript。

    正确的 HAML 语法应该是:

    :javascript
      #{testers.to_json}
    

    【讨论】:

    • 嗨,伯克斯,非常感谢您回答我。请帮助我如何在我的 js 脚本中使用这个传递的 json
    • 在您的代码中,您尝试直接在 HTML 中打印 json;但未能这样做,因为 HAML 错误。我的回答只是解决您尝试实现的目标。看来您正在尝试其他方法。请用更高级的目标更新您的答案:您要实现什么。而不是关于您遇到的某个错误的详细问题。
    • 我没有尝试打印 json。我正在尝试将转换后的 json 传递给 .js 文件
    • 然后看看@davidb 的回答。他或她解释了如何使用格式化程序在 RESTfull url 上创建数据的 json 表示。
    猜你喜欢
    • 2016-08-05
    • 2014-02-27
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多