我在控制器中有一个动作,它使用当前登录用户的上下文和create动作的嵌套路径来产生新的连接模型关系。预期用途是视图中的button_to ... remote: true
。
...
def create
enrollment = Enrollment.new(course_id: params[:course_id], user_id: current_user)
respond_to do |format|
if enrollment.save
format.json {...}
format.html {...}
else
...
end
end
end
然后我尝试使用以下内容确保这在RSpec中有效。 (注意:用户在测试前登录)
let(:course) { FactoryGirl.create(:course) }
let(:user) { FactoryGirl.create(:user) }
...
post :create, course_id: course, :format => :json
post :create, {course_id: course, :format => :json}
xhr :post, :create, course_id: course, :format => :json
xhr :post, :create, course_id: course
每次尝试都会导致在respond_to
处引发ActionController :: UnknownFormat。这也发生在常规http POST的测试中。我查看了使用RSpec测试JSON API的所有教程,没有任何东西让我超过这个错误。
我尝试使用默认使用js
来实施此操作,但会导致相同的错误。
以下是相应的JSON尝试......
<form action="/courses/1/enrollments" class="button_to" data-remote="true" data-type="json" method="post"><div><input type="submit" value="Completed" /></div></form>
Rails日志输出
Processing by EnrollmentsController#Create as JSON # => or JS
更改路由以使defaults: { format: 'json' }
导致相同的错误...
Started POST "/courses/2/enrollments" for 0:0:0:0:0:0:0:0:1
Processing by EnrollmentsController#create as JSON
Completed 406 Not Acceptable
ActionController::UnknownFormat