0

我有我的代码工作,所以我有一个企业表。有一个铅笔图标,您可以点击编辑商家信息。编辑信息出现在模态弹出框的部分内部。唯一的问题是,一旦他们进行了他们想要的更改并单击更新,它就会将他们发送到该业务的“显示”页面。我想要发生的是关闭弹出框并让它更新信息。这是我的控制器中的更新功能。

 def update
@business = Business.find(params[:id])

respond_to do |format|
  if @business.update_attributes(params[:business])
    flash[:notice] = 'Business was successfully updated.'
    format.html { redirect_to(business_url(@business)) }
    format.js
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @business.errors, :status => :unprocessable_entity }
  end
end

结尾

我尝试遵循 railscast 43 并创建了一个 .rjs 文件,但我根本无法让它工作。我的更新仍将我带到显示页面。任何帮助,将不胜感激。

编辑:添加了更多代码。

<% form_for(@business) do |f| %>
<%= f.error_messages %>

<p>
  <%= f.label :name %><br />
  <%= f.text_field :name %>
</p>
...
      <%= f.label :business_category %><br />
      <%= f.select :business_category_id, @business_categories_map, :selected => @business.business_category_id %>
    </p>
    <p>
      <%= f.label :description %><br />
      <%= f.text_area :description %>
    </p>
    <p>
      <%= f.submit 'Update' %>
    </p>
  <% end %>

这是我在编辑页面中的表单,它通过弹出窗口中的索引被调用:

<div id="popupEdit<%=h business.id %>" class="popupContact">
      <a class="popupClose<%=h business.id %>" id="popupClose">x</a>
      <% if business.business_category_id %>
        <% @business = business  %>
        <%= render "business/edit" %>
      <% end %>
    </div>
4

2 回答 2

0

不得不说,首先让你的代码在没有 javascript 的情况下工作......另外,根本不要使用 RJS。改用不显眼的 javascript。

正如 Hyland 先生所说,在我们提供任何进一步帮助之前,我们还需要查看您的视图代码。

于 2009-07-06T20:39:48.833 回答
0

很难说没有看到您的表单代码(提示提示!:-),但可能是您使用的是 form_for (它将按照普通 html 表单提交 POST)而不是 remote_form_for (它将发送 AJAX 请求) .

于 2009-07-06T20:17:15.913 回答