我的注册表单是Users模型的表单,它为公司获取字符串值.但是,我刚刚对用户belongs_to公司进行了更改.因此,我需要将Company的对象传递给Users模型.
我想使用表单中的字符串值来获取Company的对象:
@user.company = Company.find_by_name(params[:company])
Run Code Online (Sandbox Code Playgroud)
我相信上面的工作,但是当我调用时,表单将:company(字符串)传递给模型:
@user = User.new(params[:user])
Run Code Online (Sandbox Code Playgroud)
因此,在将其传递给User模型之前,我想知道(并且无法找到)删除:company param.
Jer*_*ten 196
Rails 4/5 - 编辑答案 (见评论)
由于这个问题是写的,Rails的新版本添加了提取物!并且除了如:
new_params = params.except[the one I wish to remove]
Run Code Online (Sandbox Code Playgroud)
这是一种更安全的方法,可以将所需的所有参数"抓取"到副本中而不会破坏传递的参数(这不是一件好事,因为它会使代码的调试和维护变得非常困难).
或者你可以直接传递而不复制,例如:
@person.update(params[:person].except(:admin))
Run Code Online (Sandbox Code Playgroud)
该extract!(有!砰运营商)将修改原来那么更为谨慎使用!
原始答案
您可以使用Hash#delete以下方法从哈希中删除键/值对:
params.delete :company
Run Code Online (Sandbox Code Playgroud)
如果它包含在params [:user]中,那么你可以使用它:
params[:user].delete :company
Run Code Online (Sandbox Code Playgroud)
sam*_*sam 88
您可能应该使用hash.except
class MyController < ApplicationController
def explore_session_params
params[:explore_session].except(:account_id, :creator)
end
end
Run Code Online (Sandbox Code Playgroud)
它完成了两件事:允许您一次排除多个键,并且不会修改原始哈希.
| 归档时间: |
|
| 查看次数: |
81408 次 |
| 最近记录: |