Mel*_*991 10 ruby-on-rails ruby-on-rails-4
所以我熟悉轨道和轨道4.
所以这就是我控制器底部的内容
def post_params
params.require(:post).permit(:title, :content, :category)
end
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我想要做的是弄清楚如何在post_params方法中或者稍后在控制器中单独访问这些参数.
具体来说,我想在创建帖子时使用参数之前将:category值更改为小写(因此在表中所有类别都是小写的).
编辑:也许更好的措辞我的问题是,在允许参数之后,我怎样才能访问和操纵它们.我可以像往常一样使用params [:title]吗?
我试过了
params.require(:post).permit(:title, :content, :category)
params[:category].downcase
Run Code Online (Sandbox Code Playgroud)
和
params.require(:post).permit(:title, :content)
params.require(:post).permit(:category).downcase
Run Code Online (Sandbox Code Playgroud)
但我明白了 undefined method 'downcase'
该strong_params功能只是为您的控制器提供一个"白名单"变量.它实际上是出于安全目的,字面上只是意味着您的应用程序可以访问params [:allowed_param]来保存数据.
你可以做两件事:
- >在调用post_params函数之前编辑params [:category]变量:
def create
params[:category].downcase
@post = Post.new(post_params)
@post.save
end
Run Code Online (Sandbox Code Playgroud)
- >你可以使用@thiyaram推荐的before_create函数:)
小智 7
更好您可以使用before_create回调来更新值.
喜欢,
before_create :check_params
def check_params
self.category.downcase!
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7801 次 |
| 最近记录: |