2

我这里有一个表格orders/_form.html.erb,我想提交并保存在一个名为 Categories 的表格中

<%= simple_form_for(@category) do |f| %>

  <%= f.error_notification %>

  <div class="inputs">

    <%= f.input :name, 

:label => false, 

:input_html => { :class => 'text', 

:style => 'float:left; width:250px' }, 

:placeholder => "Type of item / name of expense",


%>



   <%= f.hidden_field :user_id, 

:value => current_user.id %>


   <%= f.button :submit, 

:value => 'Add Category', 

:class => 'small grey',

:style => 'margin:5px 0 0 10px' %>


  </div>



<% end %>

在我的 categories_controller.rb 我有这个代码来创建类别:

# POST /categories

  # POST /categories.json

  def create

    @category = current_user.categories.build(params[:category])



    respond_to do |format|

      if @category.save

        format.html { redirect_to new_order_path }

        format.json { render json: new_order_path, status: :created, location: @category }

      else

        format.html { render action: "new" }

        format.json { render json: @category.errors, status: :unprocessable_entity }

      end

    end

  end

首先,我怎样才能使提交表单时不刷新页面?然后我希望类别下拉列表http://d.pr/gUwz也有新条目(我假设使用 JQ)。知道如何让我开始这样做吗?

4

3 回答 3

2

使用 Rails 3.x 你必须使用:remote => true表单

前任:

<%= form_for @comment, :remote => true, :html => { :'data-type' => 'html', :id => 
 <form code>
<% end %>

并确保包含 jQuery js 文件。

于 2012-04-10T17:03:59.733 回答
1

您应该使用以下方式在表单标签中发送 ajax 请求:

:远程=>真

检查有关 for_for 方法的文档:FormHelper#form_for-instance_method

由于 JQuery 默认使用 rails 3.0,因此您应该没有问题。

于 2012-04-10T17:03:04.760 回答
0

需要在表单标签中使用 :remote => true ,这将像 ajax 请求一样提交表单,并且表单将在不刷新页面的情况下提交。

于 2014-05-08T12:21:22.417 回答