隐藏is_hidden在前台controller要加入白名单吗?

如果加 is_hidden 这个新数据项到job的表格, 前台的controller, 即job controller的params里的permit要加入is_hidden吗?
这个数据项相关操作貌似都只在后台的controller, 即admin job controller吧? 是不是只要在那里的permit加入is_hidden(就做加入白名单的操作)就可以了?


但...最终要前台无法看到 is_hidden 的内容呀, 要在job controller这个前台的controller里面定义 才不会在前台要显示的时候 去抓取all jobs在index出现呀. 所以按理来说, 前台的controller也要对is_hidden有反应知道是啥才对吧?
【隐藏is_hidden在前台controller要加入白名单吗?】

以上为推测, 我做个尝试吧, 先只在admin job 这个后台的controller写, 然后看看运作的如何. 不行的话再在前台controller加入is_hidden的白名单好咧. 所以一开始也只有admin job的views们要添加代码就对了, OK 开始
话说, simple_form这个gem真的好用, 定义了is_hidden是boolean后, 直接在view里面写input就能自动显示选择是否为hidden. 真好用!


隐藏is_hidden在前台controller要加入白名单吗?
文章图片


然后只是改动了前台的index部分


隐藏is_hidden在前台controller要加入白名单吗?
文章图片
我去, 居然成功了, 前台那边完全不用动! 就隐藏了!!! 在后台的controller定义完毕后, 仅仅前台的controller改动index的定义就好, 也太方便了吧?!




隐藏is_hidden在前台controller要加入白名单吗?
文章图片
我真是比较皮, 尝试了一下, 后台这里的白名单如果不加is_hidden的话, 就是把:is_hidden从permit部分删掉后就无法操作了嘻嘻. 开心的尝试~


推测原因, 不管是前台还是后台的controller都是refer到同一张表格的. 所以, 仅仅在后台controller定义了"is_hidden"这个数据项目是"true"还是"false"后就被"上传"到表格中了.
前台不需要在controller里有能操作"is_hidden"的具体数据内容的代码也能根据share的同一张表格中已有的"is_hidden"的"boolean数据"来判定抓取的数据决定是否在view中显示


感觉这是个机智的推测 嘻嘻




反转!!! 开开心心去对比了一下教程, 发现教程中不管是前台还是后台的controller们 或 它们的view们...全部都加了is_hidden相关的代码!!! 白名单都加了!!! 而不像我这样, 只写了后台的, 前台的不管...妈呀...这真是剧情大反转啊!!!
Why啊!!!
真谜团...再思考吧...呜呜呜...大概我那样虽然也能运行 但后期或其他的情况下不方便吧...


啊...等等, 像教程那样不论"前台""后台"都加入is_hidden相关的代码, 就说明不管是前台还是后台,每"添加"或"编辑"job内容时, 都能将相关改动数据反馈到jobs表格, 这样不管是任何用户(不论是否admin)做的改动都能"全数完整"反应到jobs表格中.
啊! 对啊, 这样才是符合逻辑的代码思维啊...理解了


但...等等...再想想觉得...在前台提交new或edit时, 那些非admin用户 如果勾选了is_hidden后提交, 他们自己就看不到提交的job内容了不是?! 一旦选择hidden后, 不是只有在后台才能看到并edit吗?哈哈哈哈哈哈
这也是有趣, 所以教程的这个设计思路只为方便"admin用户"在前台的情况下提交 也不会在任何情况下错过任何数据改动是吧...有趣有趣


尝试了一下推测, 用"非admin"的user登录. post一条new并勾选is_hidden, 果然提交后自己就看不到相关的内容了哈哈哈哈! 但使用过程中有个新发现, edit页面有is_hidden可以勾选, 也就是说如果有工作已post后, "非admin用户"也可以在edit页面将已经发布的job变成hidden的状态. 就是"非admin用户"可在前台就让"显示"的job变成"隐藏"状态.


提问能力真是一项自学利器啊, 前后不过5分钟, 自问自答的就默默又提高了撸代码的能力了...

    推荐阅读