我很欣赏可能会有很多答案,但是如果我不能完全解释它们以满足我的需要......我希望使用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 }
答案 0 :(得分:1)
缺少模板错误对应于没有知道在获取JavaScript请求时要执行的操作的视图。
在views/components/
中,只需制作一个selected_components.js.erb
文件即可清除您收到的错误。