在rails项目中,我使用inherited_resources 1.5.0 gem
。我有以下型号:
forums_controller.rb
:
class ForumsController < InheritedResources::Base
respond_to :json
skip_before_filter :verify_authenticity_token
def permitted_params
params.permit(vocabulary: [:name])
end
end
forum.rb
:
class Forum < ActiveRecord::Base
attr_accessible :name
end
现在,当我想创建新论坛时,我将params发布到rails项目,在这种状态下,我遇到了一个问题:
当我在论坛模型(attr_accessible :name
)中使用forum.rb
时,我在服务器日志中出现以下错误,论坛不保存到数据库:
Started GET "/forums" for 127.0.0.1 at 2014-08-09 11:51:42 +0430
ActionController::RoutingError (undefined method 'attr_accessible' for #<Class:0x000000064c0468>):
app/models/forum.rb:2:in '<class:Forum>'
app/models/forum.rb:1:in '<top (required)>'
app/controllers/forums_controller.rb:3:in '<top (required)>'
当我在论坛模型中删除attr_accessible :name
时,新论坛会使用empty name
保存到数据库。我该如何解决这个问题?
答案 0 :(得分:2)
Rails 4.1不允许进行质量分配
而不是attr_accessible :name
中的model
,请使用strong parameters。您将在Controller
:
根据您的强参数控制器代码
def permitted_params
params.require(:forum).permit(:name)
end
然后在控制器操作中调用permitted_params
方法。
答案 1 :(得分:0)
我从attr_accessible
删除了forum.rb
并更改了forums_controller.rb
:
forums_controller.rb
:
class ForumsController < InheritedResources::Base
respond_to :json
#replace permitted_params with forum_params
#the name have to similar to controller name
def forum_params
params.require(:forum).permit(:name)
end
end
forum.rb
:
class Forum < ActiveRecord::Base
#some validation
end