Javascript Rails:更新条目时删除嵌套属性

Javascript Rails:更新条目时删除嵌套属性,javascript,jquery,ruby-on-rails,ruby,Javascript,Jquery,Ruby On Rails,Ruby,我有一个带有嵌套属性的表单,您可以在其中动态添加和删除属性(该表单允许您单击“添加嗜好”和“删除嗜好”链接…用户有嗜好,在输入个人资料时,他可以添加一个、两个、五个或五十个嗜好) 有了这个工具的帮助,一切都很好。但是,我还提供了更新用户配置文件的功能 进行此操作时,用户可以单击动态的“删除”链接以取消爱好。然而,这并没有像我希望的那样从数据库中删除“嗜好”。因此,我试图编写Jquery或Javascript,或者从数据库中删除对象(如果存在的话) 这是代码的样子: ... ... &

我有一个带有嵌套属性的表单,您可以在其中动态添加和删除属性(该表单允许您单击“添加嗜好”和“删除嗜好”链接…用户有嗜好,在输入个人资料时,他可以添加一个、两个、五个或五十个嗜好)

有了这个工具的帮助,一切都很好。但是,我还提供了更新用户配置文件的功能

进行此操作时,用户可以单击动态的“删除”链接以取消爱好。然而,这并没有像我希望的那样从数据库中删除“嗜好”。因此,我试图编写Jquery或Javascript,或者从数据库中删除对象(如果存在的话)

这是代码的样子:

  ...
  ...
  <%= f.fields_for :hobbys, :wrapper => false do |hobby| %>
    <tr class="fields">
      <td> <%= user.text_field :hobby %> </td>
      <td> <%= user.link_to_remove "Remove" %> </td>
    </tr>
  <% end %>
</table>
<p><%= f.link_to_add "Add hobby", :hobbys, :data => { :target => "#hobbys" } %></p>

<script>  
  $(document).on('nested:fieldRemoved', function(event){
  var field = event.field; 
  /* ??? Delete field somehow ??? */
  })
</script>

您可以使用Jquery在Ruby中调用函数来为您执行此操作:

Javascript:

$.get( "delete", { id: id_to_delete } )
  .done(function( deleted ) {
    alert( "Deleted: " + deleted.id );
  });
路线(Route.rb):

应用程序控制器(Application_Controller.rb):


单击
remove
按钮为每个活动添加一个侦听器,并向处理它的后端api发出ajax请求。它将如下所示:

$('.activities').each(function(activity) {
  $(activity).click(function(event) {
    $.ajax
      url: 'activity/:id',
      method: delete,
      success: function(data) { REMOVE ELEMENT IN HERE }
      error: alert('this didnt work');
  })
})

我一直收到一个错误,没有id为“delete”的用户……我不明白
$.get( "delete", { id: id_to_delete } )
  .done(function( deleted ) {
    alert( "Deleted: " + deleted.id );
  });
get 'delete', to: 'application_controller#delete'
def delete
    id = params[:id].to_i
    to_delete = Hobby.find(id).destroy
    render json: {id: id}
end
$('.activities').each(function(activity) {
  $(activity).click(function(event) {
    $.ajax
      url: 'activity/:id',
      method: delete,
      success: function(data) { REMOVE ELEMENT IN HERE }
      error: alert('this didnt work');
  })
})