我是Ruby的新手(本周)并被分配了一个应用程序进行修改。我添加了一个复选框,我只是想在服务器上获取复选框值,以便我可以做一些事情。我在这个网站上找到了不少这样的例子,但似乎没有什么对我有用。我觉得我只是做其他人正在做的事情!
//View
.field-row
%label ID Check?
= f.check_box :idvalue
//Controller
logger.info "DisplayParams: #{params}"
logger.info "DisplayID: #{params[:idvalue]}"
logger.info "DisplayID Another Way: #{:idvalue}"
//Model
logger.info "MODEL-ID: #{:idvalue}"
单击复选框并提交后,单击development.log
[43de5....] MODEL-ID: idvalue
[43de5....] DisplayParams: "deleted_images"=>"","utf8"=>"/","year"=>"2018","country"=>"US","idvalue"=>"1"}
[43de5....] DisplayID:
[43de5....] DisplayID Another Way: idvalue
正如你所看到的......当我打印出参数时,idvalue会出现,但是当我尝试显示实际的id值时,则不会出现。我猜测我在尝试获取此值时做错了什么?
我找到了一个params.require部分并在那里添加了我的变量
如果有人有任何想法,我很乐意听到他们的声音。一旦我在Controller中看到这个值,我最终需要将它移到模型中。
谢谢!
答案 0 :(得分:0)
看起来params对象本身可能存在一些问题,即年份和=>
之间存在错误的逗号,而"year",=>"2018"
应该是"year"=>"2018"
。也许这可以给你一些东西来研究?另一件事是尝试调用param名称的字符串版本而不是符号params['idvalue']
。祝好运! :D
params = {"deleted_images"=> "", "utf8"=> "/", "year"=> "2018", "country"=> "US", "idvalue"=> "1"}
params['idvalue']
#returns "1"
答案 1 :(得分:0)
原来并不像我想象的那么简单。 以下是它最终的工作方式:
def create
@vehicle = Vehicle.new(vehicle_params.merge(created_by_id: current_user.id))
logger.info "SHOW ID: #{params[:vehicle][:idvalue]}"
看起来我必须将它嵌入@vehicle!
谢谢大家!