2016-05-31 28 views
0

发送更新对象时输入,我们应该:method => :put覆盖在形式post如下所示:导轨 - 方法把不使用参数

<%= simple_form_for @task, :url => update_task_url, :method => :put do |f| %> 
    <%= f.error_notification %> 

    <div class="form-inputs"> 
    <%= f.input :name %> 
    <%= f.input :description %> 
    </div> 

    <div class="form-actions"> 
     <%= f.submit 'Update Task'%> 
    </div> 
<% end %> 

<%= link_to 'Back', tasks_path %> 

在控制器发出请求之前,我试图呈现检查一切params为如下正确:

render text: tasks_params 
uri = URI.parse("http://localhost/tasks/public/api/tasks/"+params[:id]) 
response = Net::HTTP.post_form(uri, task_params) 
render text: response.body 

但没有_method属性我得到如下:

{"name"=>"Task#1", "description"=>"lorem ipsum"} 

因此请求在服务器端不成功。 我在这里错过了什么?

+0

不确定你在问什么,你想在你的params中使用http方法吗? – Cyzanfar

+0

我想向api提出put请求 – omarsafwany

+0

是否在'TasksController'的'edit'方法中放置了一个断点? – Cyzanfar

回答

0

你应该张贴到所需的控制器的动作,像这样

<%= simple_form_for @task, :url => update_task_url, :method => :post do |f| %> 
     <%= f.error_notification %> 

     <div class="form-inputs"> 
     <%= f.input :name %> 
     <%= f.input :description %> 
     </div> 

     <div class="form-actions"> 
      <%= f.submit 'Update Task'%> 
     </div> 
    <% end %> 

我会在你的TasksControllerupdate动作添加一个调试器断点只是为了确保你打右路。

+0

我正在选择正确的路线,但对链接的请求不成功:/ – omarsafwany

+0

“请求链接”的含义是什么? – Cyzanfar

+0

该链接是在uri字段中指定的API url。 – omarsafwany