我最近在一个项目中开始使用ActiveAdmin,几乎所有东西都运行良好但是当我将它与friendly_id gem结合使用时遇到了问题.我正在为我的表单[我相信]抛出ActiveRecord :: ReadOnlyRecord,因为friendly_id属性的ID是只读的:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Rc5PmUYZt3BiLvfPQr8iCPPXlbfgjoe/n+NhCwXazNs=",
"space"=>{"name"=>"The Kosmonaut",
"address"=>"8 Sichovykh Striltsiv 24",
"email"=>"info@somedomain.com"},
"commit"=>"Update Space",
"id"=>"the-kosmonaut"} <--- culprit
Run Code Online (Sandbox Code Playgroud)
我猜最后一行是罪魁祸首,因为它是一个只读属性,它不是我的形式,而是在PATH中
HTTP://本地主机:5000 /管理/空间/的-kosmonaut /编辑
如何通过尝试更新ID来解决此问题?
ActiveAdmin中的表单如下所示:
form do |f|
f.inputs "Details" do
f.input :name
f.input :address
f.input :email
f.input :phone
f.input :website
end
f.inputs "Content" do
f.input :description
f.input :blurb
end
f.buttons
end
Run Code Online (Sandbox Code Playgroud)
更新:这不起作用,所以它不是friendly_id?
我尝试使用@ watson的建议应该有效,但仍然有同样的错误;-(
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Rc5PmUYZt3BiLvfPQr8iCPPXlbfgjoe/n+NhCwXazNs=",
"space"=>{"name"=>"The Kosmonaut 23"},
"commit"=>"Update Space",
"id"=>"6933"}
Run Code Online (Sandbox Code Playgroud)
HTTP://本地主机:5000 /管理/空间/ 6933 /编辑
当我用record.readonly检查控制台中的记录时?它返回false
更新更新:删除scope_to可以解决问题.
scope_to :current_user, :unless => proc{ current_user.admin? }
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我需要使用scope_to来防止用户看到他们不拥有的记录.我的猜测是(因为我假设scope_to通常与has_many一起使用)我的HABTM关联会导致一些奇怪吗?用户< - HABTM …
ruby-on-rails readonly friendly-id ruby-on-rails-3 activeadmin