Ruby on Rails页面不会在提交按钮单击时重新加载

时间:2014-08-23 14:05:04

标签: ruby-on-rails reload

我有一个批准按钮,用于更改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

我将不胜感激,谢谢!

2 个答案:

答案 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
希望有所帮助。