0

我正在制作一个关于烹饪的页面,我希望它可以轻松添加“厨房”(它只有一个name属性),这样如果我点击“创建新厨房”链接,创建新厨房的表单将每次点击都会弹出,这样您就可以通过点击一个提交按钮来创建多个厨房。

是否可以使kitchens#new操作返回 javascript 格式,以便我可以在控制器中执行respond_to do |format|jskitchens#new并在我的 new.js.erb 文件中使用 javacsript 添加表单?还是有其他方法可以做到这一点?

index.html.erb

<div class="createkitchendiv">


    <%= link_to "Create new kitchen", new_kitchen_path, :id => "createkitchenlink" %>


        <%= form_tag "/kitchen", :method => :post, :remote => true do %>

        <div class="blahblah">
        <%= render :partial => "box" %>

        </div>
        <%= submit_tag "Submit" %>

    <% end %>
    </div>

_box.html.erb(我希望能够通过单击“创建新厨房”不显眼地添加到页面的部分/表单。我不确定此设置是否适用于/不使用 js。感谢帮助

4

2 回答 2

1

当然,您可以通过操作显示您想要的任何内容new;-)

生成的表单应如下所示:

<form>
  <div id="container">
    <input type="text" name="kitchenname[]"/>
  </div>
  <input type="submit"/>
</form>

<input type="button" id="addNewInput" />

然后你只需使用 jQuery 来监听addNewInput-button。如果它被单击,则将一个新<input type="text" name="kitchenname[]" />标签插入到container-div。

然后,当单击提交按钮时,您的控制器将收到一个数组params[:kitchenname],您可以将其保存到 DB 或其他任何地方。


您可能希望在 assets/javascripts/... 文件夹中包含必要的 JS 代码。一个简单的小型侦听器,用于侦听#addNewInput.


编辑:您也可以在没有 JS 的情况下执行此操作,但它可能会变得更复杂一些。您必须制作第二个按钮,该按钮负责add new input field使控制器比以前多输出一个输入字段。此外,您可能希望在单击按钮之前保留字段中的所有值。

我会选择 jQuery 解决方案。它非常简单(以及更多的 Web 2.0);)

于 2013-03-03T22:53:52.867 回答
0

我还建议你看一下关于 Ajax 的 Railscasts 修订集http://railscasts.com/episodes/136-jquery-ajax-revised

您的问题将在 6:44 分钟前得到解决;)

于 2013-03-03T23:25:17.480 回答