Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
998 views
in Technique[技术] by (71.8m points)

ruby on rails - How to make changes to strong parameters (change to lowercase)

So I am familiarising myself with both rails and of course rails 4.

So this is what I have at the bottom of my controller

def post_params
  params.require(:post).permit(:title, :content, :category)
end

Which works fine, but what I would like to do is work out how to access those parameters individually either in the post_params method, or later in the controller.

Specifically I would like to change the :category value to lower case before making use of the parameter in creating the post (so that within the table all categories are in lowercase).

EDIT: perhaps a better phrasing to my question is, after permitting the parameters, how can i access and manipulate them afterwards..can I just use params[:title] as usual?

I have tried

params.require(:post).permit(:title, :content, :category)
params[:category].downcase

and

params.require(:post).permit(:title, :content)
params.require(:post).permit(:category).downcase

But I get undefined method 'downcase'

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The strong_params function is just about giving your controller a "whitelist" of variables to work with. It's really for security purposes, and literally just means that your app can access params[:permitted_param] to save the data.


There are 2 things you could do:

--> Edit the params[:category] variable before you call the post_params function:

def create
    params[:category].downcase
    @post = Post.new(post_params)
    @post.save
end

--> You could use the before_create function as recommended by @thiyaram too :)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...