如何在post请求中访问params

时间:2015-10-26 16:35:40

标签: ruby-on-rails ruby-on-rails-4

场景:用户(班级:User)想要通过创建应用程序(班级Course)在线申请课程(班级:Application)。

他们访问/applications/:id的应用程序页面,其中id是课程ID。这是控制器:

  def new
    @course = Course.find_by_id(params[:id])
    @application = Application.new
  end

  def create
    @application = Application.new(application_params)

    @course = Course.find_by_id(params[:id])

    @application.course_id = @course.id
    @application.save
  end

此行失败

@course = Course.find_by_id(params[:id])

因为在处理POST请求的方法中你无法访问参数,但我要求他们在应用程序上设置course_id。

2 个答案:

答案 0 :(得分:2)

如果资源是嵌套的,new_whatever_path链接只会传递一个id。所以我认为你的路线应该是这样的:

resources :course do
    resources :application, only: [:new, :create]
end

然后你可以做一个link_to“Apply:,new_course_application_path(@course)等等。

答案 1 :(得分:1)

如果你的路由嵌套并关联,你可以使用ActiveRecord方法,因为rails可以用更少的代码完成。

def create
   @course = Course.find(params[:id]) #if its nested and associated then (params[:course_id])
   @application = @course.applications.new(application_params)
   @application.save
end