繁体   English   中英

如何在Rails4中访问参数?

[英]How do I access params in Rails4?

我正在用Rails 4编写我的第一个真实应用程序。这是我的模型...

class Instructor < ActiveRecord::Base
  has_many :tickets
end

class Ticket < ActiveRecord::Base
  belongs_to :instructor
  belongs_to :tutor
end

class Tutor < ActiveRecord::Base
  has_many :tickets
end

我通常像这样在控制器中手动设置外键关系...

应用程序/控制器/ tickets_controller.rb

 def create
    @ticket = Ticket.new(ticket_params)
    @ticket.instructor = params[:instructor_id]
    @ticket.tutor = params[:tutor_id]
    ...

我过去在Rails 3中使用过这个约定...但是在Rails 4中不起作用。我猜是因为参数很强。 我尝试使用类似...

@ticket.instructor = ticket_params[:instructor_id]

...但这是行不通的。 没有错误,什么也没有保存。 这是一些控制台输出...

  Parameters: {"utf8"=>"✓", "authenticity_token"=>"afnbX2Ph2aaNj7CDnbcDI9EdA74xBBSV7oSoU4uYZ2Y=", "tutor_id"=>{"id"=>"2"}, "ticket"=>{"session_type"=>"Severe", "student"=>"John Q. Student", "student_id"=>"09098", "course_id"=>"English 111", "notes"=>""}, "instructor_id"=>{"id"=>"2"}, "commit"=>"Create Ticket"}

...如您所见,正在通过参数发送教师和教师ID。 但是我在ticket_params上进行了推入/检查...

{"session_type"=>"Severe", "student_id"=>"09098", "student"=>"John Q. Student", "course_id"=>"English 111", "notes"=>""}

...而教员ID和教员ID不存在。 想法?

编辑

在我的控制器中默认创建了ticket_params方法。 这里是...

 def ticket_params
      params.require(:ticket).permit(:tutor_id, :session_type, :student_id, :student, :instructor_id, :course_id, :notes)
 end

您需要在控制器中定义一个名为ticket_params的方法。 类似于以下内容

def ticket_params
  params.require(:ticket).permit(:name, :date)
end

上面的方法基本上告诉控制器,它期望存在params[:ticket] ,并且传递给模型的密钥只会是:name:date github repo上阅读更多内容

更新:(在ticket_params方法添加到问题之后)

更改

@ticket.instructor = params[:instructor_id]
@ticket.tutor = params[:tutor_id]

@ticket.instructor_id = params[:instructor_id][:id]
@ticket.tutor_id = params[:tutor_id][:id]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM