没有路由匹配[POST]“/student_tests/upload.1”

时间:2012-10-29 12:49:42

标签: ruby-on-rails ruby

但我希望它能匹配[POST]“/ student_tests / 1 / upload”

在我添加的routes.rb中

resources :student_tests do
    member do
      post 'upload'
    end
end

在我添加的students_test_controller中

def upload
    render :upload
end

在student_test的索引页面

<%= link_to "| Upload Scaled Scores", upload_student_test_path(test), method: :edit%>

其中test是student_test的对象

使用Rack路径

upload_student_test POST  /student_tests/:id/upload(.:format)   student_tests#upload

我在搜索“/student_tests/upload.1”时犯了什么错误,我希望它能找到“/ student_tests / 1 / upload”(这里1是学生考试的ID)

2 个答案:

答案 0 :(得分:1)

您已在路线中创建了“POST”成员操作,但您却以错误的方式与其关联:

<%= link_to "| Upload Scaled Scores", upload_student_test_path(test), method: :edit%>

实际应该是这样的:

<%= link_to "| Upload Scaled Scores", upload_student_test_path(test), method: :post %>

然而,这可能不是传统的路由路由方式。如果您只想在那里呈现视图,GET方法将是最合适的。上传文件时,您可以使用此处尝试的POST方法。

答案 1 :(得分:0)

我认为您使用路线的方式可以更改如下:

match ':controller(/:action(/:id(.:format)))' 

我不明白你在控制器动作之前想要ID的原因。您可以更改路由格式并相应地访问ID。

你提出这个问题的方式可能会更好,因为我发现很难理解你的问题。用我的理解回答这里。