def update
@product = product.find(params[:id])
respond_to do |format|
if @product.update(product_params)
format.html { redirect_to @product }
format.js
format.json { render json: @product, status: :accepted }
else
format.html { render action: "edit" }
format.js
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
// update.js.erb
<% if @product.errors.any? %>
$('#alert').show()
$('#alert-content').html('<%= @product.errors.join(', ')%>')
<% else %>
$('#product_<%= @product.id %>').replaceWith('<%= j render(@product) %>');
<% end %>
我觉得使用 format.js 的优点是可以减少对 dom 的操作,但对每一个 action 都要新建不同的 view,显得有点零碎。而 format.json 的优点是纯前端处理,数据传输量少,但要自己写很多的 dom 操作。
我之前也写过一点 ember,如果只是在 app 上做简单的 ajax,而不是做 spa,ember 显得太重了
不知道有什么 gem 或者轻量的前端框架能结合两者的优点?