在rails中进行非常基本的表单更新时,是否有人遇到406错误?对象已更新,但重定向失败。我已尝试将格式指定为HTML以及删除respond_to do |format|
根据日志更新为HTML ItemsController#update as HTML
我确信我只是在忽视一些愚蠢的事情,但是我一直在试图解决这个问题。我不是想通过ajax更新或访问JSON。我已尝试使用标准respond_to do |format|
并指定HTML以及完全删除respond_to do |format|
。可以编辑应用程序中的其余对象,但不会出现此问题。
路线
resources :items
在控制器中
def update
@item = Item.find(params[:id])
if @item.update_attributes(params[:item])
redirect_to @item
end
end
在视图中
<%= form_for(@item) do |f| %>
<%=f.text_field(:name)%>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
答案 0 :(得分:1)
您的更新操作还需要处理update_attributes为false的情况。像,
def update
@item = Item.find(params[:id])
if @item.update_attributes(params[:item])
redirect_to @item
else
render 'edit'
end
end
答案 1 :(得分:0)
作为Shailen Tuli答案的替代方案,请使用
@item.update_attributes!(params[:item])
(注意!) 如果无法保存,它将生成错误。
406主要意味着:Rails没有任何东西可以发送回客户端,并且在您保存失败的情况下会发生。