我是Ruby on Rails的新手,不了解使用强参数的私有方法。
我将如何重构?有人可以给我一个例子吗?
我尝试查找它,但是我发现的只是在CRUD中使用强参数的CRUD示例。
def create
title = params["song"]["title"]
rating = params["song"]["rating"]
artist_id = params["song"]["artist_id"]
song = Song.create(title: title, rating: rating, artist_id:
artist_id)
redirect_to song_path(song)
end
def update
title = params["song"]["title"]
rating = params["song"]["rating"]
artist_id = params["song"]["artist_id"]
song = Song.find(params[:id])
song.update(title: title, rating: rating, artist_id: artist_id)
redirect_to song_path(song)
end
答案 0 :(得分:0)
您尝试过类似的方法吗?请注意,您不是在这里管理错误
def create
song = Song.create(song_params)
redirect_to song_path(song)
end
def update
song = Song.find(params[:id])
song.update(song_params)
redirect_to song_path(song)
end
private
def song_params
params.require(:song).permit(:title, :rating, :artist_id)
end
在这一行中,您只是在歌曲对象中将这三个参数的名称列入白名单,并且该方法在create
和update
操作中被调用
params.require(:song).permit(:title, :rating, :artist_id)
这意味着,如果在歌曲对象中发送了duration
,则该属性不会更改,因为该属性未列入白名单