Ruby - 控制器(或模型)中的访问参数

问题描述 投票:0回答:2

我是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中看到这个值,我最终需要将它移到模型中。

谢谢!

ruby ruby-on-rails-5
2个回答
0
投票

看起来params对象本身可能存在一些问题,即年和=>之间有一个错误的逗号,也就是"year",=>"2018"应该是"year"=>"2018"。也许这可以给你一些东西来研究?另一件事是尝试调用param名称的字符串版本而不是符号params['idvalue']。祝好运! :d

params = {"deleted_images"=> "", "utf8"=> "/", "year"=> "2018", "country"=> "US", "idvalue"=> "1"}
params['idvalue']
#returns "1"

0
投票

事实证明并不像我想象的那么简单。以下是它最终的工作方式:

  def create
     @vehicle = Vehicle.new(vehicle_params.merge(created_by_id: current_user.id))
     logger.info "SHOW ID: #{params[:vehicle][:idvalue]}"

看起来我必须将它嵌套在@vehicle中!

谢谢大家!

© www.soinside.com 2019 - 2024. All rights reserved.