【问题标题】:How to access params in post request如何在发布请求中访问参数
【发布时间】:2015-11-21 04:57:30
【问题描述】:

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

他们访问申请页面,地址为/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。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果您的 Routes 嵌套并关联,您可以使用 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
      

      【讨论】:

        猜你喜欢
        • 2021-07-06
        • 1970-01-01
        • 2012-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多