Ruby on rails:在索引页面上的new和edit窗体上使用相同的实例变量with partial

时间:2016-07-14 16:55:57

标签: ruby-on-rails modal-dialog simple-form

在我的索引页面上,我显示了一个"任务列表"

我在顶部有一个按钮"添加任务"使用简单形式的部分模态。这很好。

在我的任务列表中,我为每个任务显示编辑和删除链接。删除工作正常,但编辑并没有真正起作用,因为它使用我在控制器中设置的@task = Task.new。所以"编辑"莫代尔实际上是一个新的"模态

理想情况下,我希望@task等于" task"在我的每个迭代器中

我一直在尝试许多不同的方法来解决这个问题,主要是使用params:

我的编辑链接是:

<div class="row top-buffer">
    <div class="col-md-10 col-md-offset-1 products">
        <ul class="nav nav-pills cat-nav">
            <c:forEach items="${catList}" var="category">
                <li role="presentation" id="${category.id}">
                    <a href="/show-category?id=${category.id}" >${category.name}</a>
                    <ul class="dropdownn">
                        <c:forEach items="${category.childCategories}" var="childCat">
                            <li><a href="/show-category?id=${childCat.id}">${childCat.name}</a> </li>
                        </c:forEach>
                    </ul>
                </li>
            </c:forEach>
            <li role="presentation" class="pull-right" id="0"><a href="/show-category?id=0">All</a> </li>
        </ul>
    </div>
</div>

在我的控制器中,我的索引方法如下:

    <% @tasks.each do |task| %>
      ...
      <%= link_to 'Edit', "?task_id=#{task.id}", { 'data-toggle' => 'modal', 'data-target' => '#myModal' } %>
    <% end %>

然而,这也不起作用,并且@task似乎一劳永逸地设置,它永远不会进入params的条件。

这可行吗?对于这类问题,轨道的最佳做法是什么?

感谢您的回答!

1 个答案:

答案 0 :(得分:1)

您可以将task_id作为数据参数传递

视图

<%= link_to 'Edit', "", { 'data-task-id' => task.id, 'data-toggle' => 'modal', 'data-target' => '#myModal' } %>

控制器

if params.has_key?(:data-task-id)