Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3:使用rabl生成视图_Ruby On Rails_Ruby_Ruby On Rails 3_Json_Rabl - Fatal编程技术网

Ruby on rails Rails 3:使用rabl生成视图

Ruby on rails Rails 3:使用rabl生成视图,ruby-on-rails,ruby,ruby-on-rails-3,json,rabl,Ruby On Rails,Ruby,Ruby On Rails 3,Json,Rabl,在我的Rails应用程序中,我有两个实例变量@departments和@register @部门= { "users": [ { "departmentid": "DP11" }, { "departmentid": "DP12" }, { "departmentid": "DP13" }, {

在我的Rails应用程序中,我有两个实例变量@departments和@register

@部门=

{
    "users": [
        {
            "departmentid": "DP11"
        },
        {
            "departmentid": "DP12"
        },
        {
            "departmentid": "DP13"
        },
        {
            "departmentid": "DP10"
        }
    ]
}
@寄存器=

{
    "attendance": [
        0,
        0,
        2,
        1
    ]
}
@寄存器包含一个数组

是否可以使用rabl(attendancebydepartment.json.rabl)视图显示如下格式

我的控制器看起来像

def attendancebydepartment
    @register = Array.new
    @departments = User.select('departmentid').uniq
    startdate = params[:startdate]
    enddate = params[:enddate]
    @count = @departments.count
    @departments.each do |d|
    @register << (Register.where(:date => startdate..enddate , :departmentid => d.departmentid).sum(:one))+(Register.where(:date => startdate..enddate , :departmentid => d.departmentid).sum(:two))
    end
  end
def attendancebydepartment
@register=Array.new
@departments=User.select('departmentid').uniq
startdate=参数[:startdate]
enddate=参数[:enddate]
@count=@departments.count
@每个部门都有|
@register startdate..enddate,:departmentid=>d.departmentid).sum(:one))+(register.where(:date=>startdate..enddate,:departmentid=>d.departmentid).sum(:two))
结束
结束

是否可以将每个部门及其对应的考勤添加到数组中,以便我可以按预期格式显示。

也许可以使用
zip
方法创建一个新变量,然后显示该变量

irb(main):001:0> departments = {'users' => [{'id' => 1}, {'id' => 2}]}
=> {"users"=>[{"id"=>1}, {"id"=>2}]}

irb(main):002:0> register = {'attendance' => [0,1]}
=> {"attendance"=>[0, 1]}

irb(main):004:0> departments['users'].zip(register['attendance'])
=> [[{"id"=>1}, 0], [{"id"=>2}, 1]]

另一方面,看起来更简单的设计应该是有一个
部门
模型,它有一个
用户
有许多关联。然后,您可以直接从
部门

的实例中引用用户数。使用
OpenStruct
在控制器中创建对象可能是最简单的,类似这样的,但我建议重新编写
attendancebydepartment
以避免循环两次

@users = []
@departments.each_with_index do |dep, index|      
  user = OpenStruct.new
  user.departmentid = dep.departmentid
  user.attendence = @register[index].attendence
  @users << user
end

我在第3行第2列的对象中收到错误“MultiJson::DecodeError-无效格式,应为,或}”……部门不是模型,而是用户表中的字段。用户和寄存器之间没有关系。。。。。。。
@users = []
@departments.each_with_index do |dep, index|      
  user = OpenStruct.new
  user.departmentid = dep.departmentid
  user.attendence = @register[index].attendence
  @users << user
end
collection @users => :users
attribute :departmentid, :attendence