如何使用coffeescript在rails中请求“PUT”

时间:2015-08-24 03:45:36

标签: javascript ruby-on-rails coffeescript

我正在努力解决这个特殊情况。

首先,我准备了用户可以点击的链接

<%= link_to 'DOING', task_path(task_todo, new_status: Settings.task_status[:doing]), :method => :put %>

其次,我希望这与表格行相关联, 所以写得像这样。

<% @tasks_todo.each do |task_todo| %>
    <tr data-link="<%= task_path(task_todo, new_status: Settings.task_status[:doing])%>">
        <td><%= @projects.find(task_todo.project_id).project_name %></td>
        <td><%= task_todo.task_name %></td>
        <td><%= task_todo.memo %></td>
    </tr>
<% end %>

coffeescript就是这样。

$ ->
  $(document).on('click', 'tr[data-link]', (evt) -> 
    window.location = this.dataset.link
)

现在我可以使这一行可以点击,但方法仍然是'GET',所以它出错了“Controller#Action”。我怎么能把它变成'PUT'。

1 个答案:

答案 0 :(得分:1)

link_to ... method: :put做了一些JavaScript魔法。您无法使用window.location发出PUT请求。只有两种方法可以发出PUT请求:

  • 没有过渡:AJAX
  • 转换:提交表单。

基本上,要重新创建Rails为您做的事情,您需要做的是创建一个表单元素,将一些输入元素放入其中,然后在表单上调用.submit()