0

我有以下链接:

link_to("Toggle", "/jobs/#{job.id}/toggle_is_money_paid", :remote => true)

is_money_paid它使用 Ajax 请求切换作业的字段:

def toggle_is_money_paid
  job = Job.find(params[:id])
  job.update_attributes(:is_money_paid => !job.is_money_paid)
  render :nothing => true
end

# config/routes.rb
match "/jobs/:id/toggle_is_money_paid" => "jobs#toggle_is_money_paid"

但是,如果用户直接键入:

http://localhost:3001/jobs/200/toggle_is_money_paid

在浏览器中,它将切换is_money_paid作业#200 的字段。

我怎么能防止这种情况,这样用户只能通过按下链接来切换字段。

4

1 回答 1

2

您可以通过不使用 定义路由来防止这种情况match,而是使用不是 get 的 HTTP 动词之一。您很可能会想要使用put

put "/jobs/:id/toggle_is_money_paid" => "jobs#toggle_is_money_paid"

然后你会改变你link_to的:

link_to("Toggle", "/jobs/#{job.id}/toggle_is_money_paid", :remote => true, :method => :put)
于 2011-03-15T02:11:15.767 回答