【问题标题】:Rails erb adding extra template without idRails erb添加没有id的额外模板
【发布时间】:2017-12-21 18:42:31
【问题描述】:

Link to image of what I'm talking about

我的问题是在我的列表底部呈现了一个没有项目 ID 的额外模板。单击时,图标会删除它们旁边的项目。即使没有与之相关的项目,底部图标也会显示。

这是我的节目 html.erb

<div class="row">
<div class="col-md-8">
    <div class="media">
        <br />
        <div class="media-body">
            <h3><%= @user.email %></h3>
            <br />
            <%= render partial: 'items/form', locals: {user: @user} %>
            <div class="media">
                <div class="media-body">
                    <h4 class="media-heading">
                        <ul>
                            <%= render @items %>
                        </ul>    
                    </h4>
                </div>
            </div>
        </div>
    </div>
</div>

这是我的 _item 模板

<li><%= item.name %><%= link_to "", [current_user, item], remote: true, method: :delete, class: 'glyphicon glyphicon-ok' %></li>

这是我的物品控制器

class ItemsController < ApplicationController
def create
  @item = Item.new(item_params)
  @item.user = current_user

  if @item.save
    flash[:notice] = "Item was saved."
    redirect_to user_path(current_user.id)
  else
    flash.now[:alert] = "There was an error saving the item. Try again."
    redirect_to user_path(current_user.id)
  end
end

def destroy
  @item = Item.find(params[:id])

  if @item.destroy
    flash[:notice] = "Item deleted"
    redirect_to user_path(current_user.id)
  else
    flash.now[:alert] = "Error deleting the item."
    redirect_to user_path(current_user.id)
  end
end

private
def item_params
  params.require(:item).permit(:name)
end

结束

这是我的用户控制器

class UsersController < ApplicationController

  def show
    @user = current_user
    @item = Item.new
    @items = @user.items
  end
end

项目属于用户,并在用户下嵌套路由。将鼠标悬停在最后一个复选标记(我想去掉的那个)上时显示链接 .../users/6/items,而项目旁边的其他复选标记显示 .../users/6/items/40

这是我的 _form.html.erb 项目:

<%= form_for [user, user.items.new] do |f| %>
  <%= f.text_field :name, class: 'form-control', placeholder: "Enter your to-do item", value: nil, required: true %>
  <div class="form-group">
    <%= f.submit "Save", class: 'btn btn-success' %>
  </div>
<% end %>

【问题讨论】:

    标签: ruby-on-rails templates render erb nested-routes


    【解决方案1】:

    删除

    @item = Item.new
    

    来自用户控制器中的显示操作。

    class UsersController < ApplicationController
    
      def show
        @user = current_user
        @items = @user.items
      end
    end
    

    【讨论】:

    • 我从用户控制器的显示中删除了@item,但底部的额外图标仍然存在。
    • 请发布您的“项目/表格”
    • 我只是在原始问题的底部添加了它。另外,我发现了一个有效的临时解决方案,方法是在
    • 之前添加这个循环:
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签