使用ajax调用rails更新属性

时间:2014-12-22 15:02:34

标签: javascript jquery ruby-on-rails ajax

我很欣赏可能会有很多答案,但是如果我不能完全解释它们以满足我的需要......我希望使用ajax在我的模型中更新记录属性。

在我的情况下,选择了属性:true

在我的场景中,我点击了一个元素并希望更新模型中的元素记录

<ul class="components">
 <% @component.each do |c| %>
  <li id="<%= c.component_name %>" data-id="<%= c.id %>" data-remote="true"><%= c.component_name %></li>
 <% end %>
</ul>

的jQuery

$('#Literacy, #Numeracy').on('click', function(){

  var component_name = $(this).text();
  var component_id = $(this).data('id');
  data_send = { id: component_id }

  $.ajax({
   method: 'put',
   url: '/components/selected_component',
    data: data_send,
     success: function(data) {
     console.log(data)
    }
 });
});

控制器

def selected_component
 @component = Component.find(params[:id])
 @component.update_attributes(selected: true)
end

也许我正确地看着这个但是如何通过click事件(存储为component_id)将id输入到我的selected_component方法

我在这里错过了一些但是在今天的努力中挣扎

目前我收到错误

Missing template components/selected_component

但我不想在成功更新后呈现该页面,我只想留在同一页面

修改

解决我的问题我只需将其添加到我的format.js

{ render nothing: true }

1 个答案:

答案 0 :(得分:1)

缺少模板错误对应于没有知道在获取JavaScript请求时要执行的操作的视图。

views/components/中,只需制作一个selected_components.js.erb文件即可清除您收到的错误。