0

从我的客户,我正在发送一个与其他对象相关的对象:

变量数据 = {
  “评论”:result.comment,
  “文档”:{
    “id”:结果.doc.id
  }
  “地点”: {
    “网址”:result.site.url
  }
};

$.ajax({
  网址:'/数据',
  类型:'POST',
  数据:数据
});

这将发布到我的/data控制器。在create方法中,我有这段代码:

定义创建
  @data = Data.new(params[:data])
  @data.user_id = current_user.id

  respond_to 做 |格式|
    如果@data.save
      @doc = Doc.find_or_create_by_id(params[:doc])
      @doc.save
      @site = Site.new(params[:site])
      @site.doc_id = @doc.id
      @site.save

      format.html //东西
      format.json //东西
      format.js //东西
  结尾
结尾

我很好奇我是否正确地解决了这个问题。对于像我这样的相关对象,控制器似乎很“重”。

这个问题还有其他解决方案吗?

编辑:

数据模型:

类数据
  属于_to :site, :polymorphic => true
  属于_to:用户
结尾
4

1 回答 1

2

您的数据模型如何?你有所有嵌套属性的赋值方法吗?

def create
  @data = Data.new(params[:data])
  @data.user = current_user

  respond_to do |format|
    if @data.save
      @doc = Doc.find_or_create_by_id(params[:doc][:id]) 
      @site = @doc.sites.create(params[:site])

      format.html //stuff
      format.json //stuff
      format.js //stuff
  end
end

您可以在Rails 指南中查看有关 Active Record 关系的更多详细信息。

于 2012-07-24T23:28:58.950 回答