【问题标题】:Rails simple_form association not saving to dbRails simple_form 关联不保存到数据库
【发布时间】:2018-01-15 04:54:32
【问题描述】:

我有 2 个具有 HABTM 关系的模型:作者和出版物。

使用 simple_form,我能够创建一个 add new publication 表单,将所有可能的作者显示为复选框。但是,这些关联并没有保存到我的数据库中。

我知道这是一个参数许可问题,但我不确定如何正确编写它。目前我有:

def publication_params
    params.require(:publication).permit(:publication_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract)
end

我该如何编写,以便 Rails 也可以保存来自 authors 表(只有两列 - author_idname)的关联?

【问题讨论】:

    标签: ruby-on-rails associations simple-form has-and-belongs-to-many whitelist


    【解决方案1】:

    author_id 添加到参数中:

    def publication_params
        params.require(:publication).permit(:author_id, :publication_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract)
    end
    

    【讨论】:

    • 你能把控制器收到的参数贴在这里吗?您可以安装此 gem github.com/pry/pry 然后在控制器操作的开头添加“binding.pry”,然后在服务器的日志中查看您可以评估参数
    • def publication_params params.require(:publication).permit(:publication_id, :author_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract,) end
    • @League14 我的意思是实际的参数,通过请求收到的参数
    • 好的,我是新手,我认为我正确使用了它。如果我错了,请纠正我。这是我的服务器所说的:
    • 在 2017-08-07 16:27:40 -0400 开始 POST "/publications" for ::1 由 PublicationsController#create 作为 HTML 参数处理:{"utf8"=>"✓", "authenticity_token"=>"RVi95ns3ECRctfNprDS3gvBLAxt5VN5sn25FJCdbGuEmEJblYPw1eoEHu4GMzcm8gar2qnIZTjweUNzvqJok8Q==", "publication"=>{"name"=>"Default", "author_ids"=>["", "2", "3"], "journal_ids=" "", "2"], "year_published"=>"2009", "month_published"=>"26", "day_published"=>"21", "citation"=>"test", "source"=>" test", "abstract"=>"test"}, "commit"=>"Create Publication"} Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms)
    【解决方案2】:

    知道了!

    我必须将accepts_nested_attributes_for :authors, :journals 添加到我的发布模型中。然后在我的 Publications_controller 中,我不得不将我的参数更改为:

    def publication_params
        params.require(:publication).permit(:publication_id, :name, :year_published, :month_published, :day_published, :citation, :source, :abstract, :author_ids => [], :journal_ids => [])
    end
    

    这让我可以将新的关联保存到我的数据库中,并正确更新了我的联接表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      相关资源
      最近更新 更多