我应该使用get,post,put - 这有关系吗?

min*_*ank 1 routing routes ruby-on-rails http-verbs ruby-on-rails-3.2

在我的应用程序中,我在点击时间链接时切换是否student属于training time或不属于.

# controller
def time
  @student = Student.find(params[:student_id])
  @time = TrainingTime.find(params[:training_time_id])
  @student.toggle_time(@time)
  respond_to do |format|
    format.html { redirect_to @student }
    format.js
  end
end

# routes
resources :students do
  match "time/:training_time_id", to: "students#time", as: :toggle_time
end

# view
<%= link_to t.time_format, student_toggle_time_path(@student, t), remote: true %>
Run Code Online (Sandbox Code Playgroud)

目前它正在使用匹配,但是设置它的正确方法是什么?为什么?

感谢您的输入.

kso*_*sol 8

这都是关于语义的.GET获取资源,POST创建资源PUT(或者PATCH,这是关于此事的争论)来更新资源,DELETE删除资源.

要honnest,有争论约POSTPUT太多.但是,由于Web服务器通常只处理GETPOST(通过参数模拟其他动词的行为),我倾向于不打扰太多,并坚持我上面写的.

你似乎没有创建任何资源,从语义上讲,PUT就是你正在寻找的东西.

至于matchrails 3.X,是一个catch all =>所有动词在路由中匹配.你可以限制使用match 'something', via: [:get, :post].使用Rails 4,默认情况下它不会执行任何操作,您必须明确处理的动词.