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

时间:2018-03-01 19:05:59

标签: ruby ruby-on-rails-5

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

谢谢!

2 个答案:

答案 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!

谢谢大家!