我有一个批准按钮,用于更改status
表记录的Shop
属性。当我点击它时, 更改了属性,但它没有重新加载页面,所以我必须手动重新加载页面以查看结果,这非常不方便。看起来一切都必须工作,但页面仍然没有重新加载。
我的视图有:
<%= form_for([:admin, @shop], remote: true, data: { confirm: "You sure?" }) do |fr| %>
<%= fr.hidden_field :status, :value => 2 %>
<%= fr.submit "Reject", class: "btn btn-large btn-danger" %>
<% end %>
控制器:
def update
@shop = Shop.find(params[:id])
if @shop.update_attributes(shop_params)
flash[:success] = "Shop updated"
redirect_to([:admin, @shop])
else
render 'edit'
end
end
我将不胜感激,谢谢!
答案 0 :(得分:1)
您正在remote: true
中使用form_for
,这是通过AJAX提交表单。
您可能需要添加method: :put
,以便表单点击操作update
而不是create
。
因此,只需尝试删除remote: true
并添加method: :put
,然后再尝试提交表单。
<%= form_for([:admin, @shop], method: :put, data: { confirm: "You sure?" }) do |fr| %>
<%= fr.hidden_field :status, :value => 2 %>
<%= fr.submit "Reject", class: "btn btn-large btn-danger" %>
<% end %>
答案 1 :(得分:0)
也许你错过了respond_to do | format |电话或你是否在问题上省略了它们?
应该是这样的:
def update
@shop = Shop.find(params[:id])
respond_to do |format|
if @shop.update(shop_params)
format.html { redirect_to [:admin, @shop], notice: "Shop updated"
else
format.html { render action: 'edit' }
end
end
end
希望有所帮助。