在我看到的教程中,create已经实现如下:
def create
@note = Note.new(note_params)
@note.save
redirect_to @note
end
private
def note_params
params.require(:note).permit(:title, :type, :description, :dueDate)
end
我已经阅读了有关可选参数的fetch方法,但是如何将这两种方法混合起来需要一些参数并允许其他参数呢?会是这样的:
private
def note_params
params.require(:note).permit(:title, :type)
params.fetch(:note, {}).permit(:description, :dueDate)
end
在这种情况下,我可以期望传递0,1或2个获取的参数吗?
答案 0 :(得分:1)
我认为你读错了。在这一行
params.require(:note).permit(:title, :type, :description, :dueDate)
所需参数为:note
。 :title
,:type
和其他人只是被允许/允许出现在:note
下。这种语法都不是必需。如果您确实需要:title
,那么最好通过Note模型上的状态验证来处理。
class Note
validates_presence_of :title
end
现在,如果您没有通过params[:note][:title]
,@note.save
将返回false,您可以使用用户友好的错误呈现表单(突出显示缺少的字段等)。如果note_params
方法在缺少的标题属性上引发异常,您将无法(如此容易)执行此操作。这就是你在rails中处理所需记录属性的方法。