【问题标题】:Ruby on Rails Page not reloading on submit button clickRuby on Rails 页面未在单击提交按钮时重新加载
【发布时间】:2014-10-17 05:42:00
【问题描述】:

我有一个批准按钮,用于更改Shop 表记录的status 属性。当我点击它时,它确实改变了属性,但它并没有重新加载页面,所以我必须手动重新加载页面才能看到结果,这非常不方便。看起来一切正常,但页面仍未重新加载。

我的观点有:

<%= 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

如果有任何帮助,我将不胜感激,谢谢!

【问题讨论】:

  • 如果您想重新加载页面,请从 form_for 中删除 remote: true

标签: ruby-on-rails reload


【解决方案1】:

您在form_for 中使用remote: true,这是通过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 %>

【讨论】:

    【解决方案2】:

    也许你错过了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
    

    希望有帮助。

    【讨论】:

    • 不,这没有帮助,但感谢您的建议!
    猜你喜欢
    • 2018-10-15
    • 2019-06-24
    • 2023-03-21
    • 2021-11-12
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多