2015-10-26 35 views
0

场景:用户(类: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上的应用。

回答

2

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

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

然后你就可以做的link_to“应用:, new_course_application_path(@course)等

+0

不知道嵌套的资源,谢谢 – frostbite

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