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
Ruby on rails 具有模型关联的Rails json对象_Ruby On Rails_Ruby_Json_Associations - Fatal编程技术网

Ruby on rails 具有模型关联的Rails json对象

Ruby on rails 具有模型关联的Rails json对象,ruby-on-rails,ruby,json,associations,Ruby On Rails,Ruby,Json,Associations,我是Ruby和Rails的新手。我在为我的服务构造json响应时遇到问题。 我有两种型号: class Transaction < ActiveRecord::Base has_and_belongs_to_many :users end class User < ActiveRecord::Base has_and_belongs_to_many :transactions end 这是我的密码: @user = User.find_by_facebookId(params[:

我是Ruby和Rails的新手。我在为我的服务构造json响应时遇到问题。 我有两种型号:

class Transaction < ActiveRecord::Base
has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
has_and_belongs_to_many :transactions
end
这是我的密码:

@user = User.find_by_facebookId(params[:id])

#json = User.find_by_facebookId(params[:id], :include => :transactions).to_json( :include => :transactions )

if @user != nil
   render json: {"transactions" => @user.transactions.map do |transaction|
         transaction
   end
   }
else
  render json: {"transactions" => [{}]}
end

您可以执行以下操作:

json_data = @user.transactions.map do |transaction|
  transaction.as_json(include: :users)
end
render json: { transactions: json_data }
根据这个问题/答案:

试试这个

render json: { "transactions" => @user.transactions.map do |transaction|
                    JSON.parse(transaction.to_json(:include => :users))
               end
             }

它将是散列而不是字符串数组。

谢谢!这几乎完成了任务。我只得到\个字符,例如:{“事务”:[“{\”名称\“:\”测试\“,\”用户\“:…您可能必须在映射的closing end关键字后添加一个
。到\u json
,以消除此转义过程。这是add anothe\。也许我应该在我的类中使用\u json methodos或类似的方法?但无论如何,感谢您的帮助。编辑:as\u json起作用。
render json: { "transactions" => @user.transactions.map do |transaction|
                    JSON.parse(transaction.to_json(:include => :users))
               end
             }