Rails 更新 contenteditable
Rails updates with contenteditable
我的控制器建立了一个索引,很好地列出了它的大量内容。我已经使每个 td
内容可编辑。 Onblur,我想提交更新后的数据。
为了找到正确的行,我给了每个 tr
模型的 id
(作为名称),但我只想更新一个属性,而不是整个模型。我的 js 看起来像这样:
$.ajax({
type: 'PUT',
url: '/songs/'+$(this).parent("tr").attr("name"),
data: {$(this).attr("name"): $(this).html()},
dataType: "JSON",
success: function(data) {
console.log(data);
}
});
当然,这不起作用(因为 "data:" 行)。不过,关键是我实际需要为我的控制器 update_attributes
提交哪些数据才能工作。如何序列化不是我首先关心的。
Rails 将合并 URL(ID)中的参数和 post 发送的数据。所以我的 js 现在是(这发生在 blur
):
$.ajax({
type: 'PUT',
url: '/songs/'+$(this).parent("tr").attr("name"),
data: dataToSend,
dataType: "JSON",
success: function(data) {
console.log(data);
}
});
但在服务器端,关键是 update_attribute
其中亮点是:
def update
@song = Song.find(params[:id])
@song.update_attributes params[:key] => params[:value]
end
我的控制器建立了一个索引,很好地列出了它的大量内容。我已经使每个 td
内容可编辑。 Onblur,我想提交更新后的数据。
为了找到正确的行,我给了每个 tr
模型的 id
(作为名称),但我只想更新一个属性,而不是整个模型。我的 js 看起来像这样:
$.ajax({
type: 'PUT',
url: '/songs/'+$(this).parent("tr").attr("name"),
data: {$(this).attr("name"): $(this).html()},
dataType: "JSON",
success: function(data) {
console.log(data);
}
});
当然,这不起作用(因为 "data:" 行)。不过,关键是我实际需要为我的控制器 update_attributes
提交哪些数据才能工作。如何序列化不是我首先关心的。
Rails 将合并 URL(ID)中的参数和 post 发送的数据。所以我的 js 现在是(这发生在 blur
):
$.ajax({
type: 'PUT',
url: '/songs/'+$(this).parent("tr").attr("name"),
data: dataToSend,
dataType: "JSON",
success: function(data) {
console.log(data);
}
});
但在服务器端,关键是 update_attribute
其中亮点是:
def update
@song = Song.find(params[:id])
@song.update_attributes params[:key] => params[:value]
end