尝试调整代码以形成我的一个视图,以便在部分

时间:2016-08-03 19:16:50

标签: ruby-on-rails ruby

我有一个部分,它从数据库中取一个列迭代它并显示网页上的所有网址。我想添加我在app/views/topics/show.html.erb页面中编写的行,允许用户编辑,删除或喜欢该链接。

这三行是​​我想要适应添加到局部的,前两行是执行编辑和删除功能的按钮,第三行是带有相似代码的部分链接。

<%= link_to "Edit bookmark", edit_topic_bookmark_path(bookmark.topic, bookmark), class: 'btn btn-primary btn-xs'%><br>
<%= link_to "Delete bookmark", [bookmark.topic, bookmark], method: :delete, class: 'btn btn-danger btn-xs', data: { confirm: 'Are you sure you want to delete this bookmark?' } %>
<%= render partial: 'likes/likes', locals: { bookmark: bookmark } %>

这是我希望将其改编为位于app/views/bookmarks/_bookmarksandlikes.html.erb

的部分内容
<div>
    <h3>
        <%y=1%>
        <% mark.each do |x| %>
            <%=y%>)<%= link_to x.url, x.url%>
            <%y=y+1%>

        <% end %>
    </h3>
</div>

并且正在使用这两行从app/views/users/show.html.erb调用它。

 <%= render partial: 'bookmarks/bookmarksandlikes', locals: { mark: @bookmarks} %>
 <%= render partial: 'bookmarks/bookmarksandlikes', locals: { mark: @liked_bookmarks} %>

这是我试图将代码插入部分

的方法
<div>
  <h3>
    <%y=1%>
    <% mark.each do |x| %>
      <%=y%>)<%= link_to x.url, x.url%>
      <%y=y+1%>
      <%= link_to "Edit bookmark", edit_topic_bookmark_path(x.topic, x), class: 'btn btn-primary btn-xs'%><br>
      <%= link_to "Delete bookmark", [x.topic, x], method: :delete, class: 'btn btn-danger btn-xs', data: { confirm: 'Are you sure you want to delete this bookmark?' } %>
      <%= render partial: 'likes/likes', locals: { x: x } %>
   <%end%>
 </h3>

当我按原样运行代码时,会出现一个错误页面,上面写着&#34; undefined local variable or method 'bookmark' for #<#<Class:0x007fdfb1b39c80>:0x007fdfb1988d50> Did you mean? bookmark_url or @bookmarks

并说部分的第3行存在问题,其中包含了在app/views/likes/_likes.html.erb

中喜欢页面的代码
<% if policy(Like.new).create? %>
  <div>
    <% if like = current_user.liked(bookmark) %>
    <%= link_to [bookmark, like], class: 'btn btn-danger', method: :delete do %>
      <i class="glyphicon glyphicon-star-empty"></i>&nbsp; Unlike
    <% end %>
<% else %>
  <%= link_to [bookmark, Like.new], class: 'btn btn-primary', method: :post do %>
    <i class="glyphicon glyphicon-star"></i>&nbsp; Like
  <% end %>
<% end %>
</div>
<% end %>
此时,在解决这个问题的过程中,似乎只有我试图插入的部分的第三行给了我一些问题,编辑和删除按钮渲染得很好。

即使你不知道答案,我也非常希望听到有关我在这个问题或者你的想法中没有考虑的问题,如果你需要更多信息,请告诉我,我会发布更多。

感谢您查看我的问题。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题,我无法使用partial,因为部分app/views/likes/_likes.html.erb采用的是与app/views/bookmarks/_bookmarksandlikes.html.erb传递的变量不同的变量,所以我只需将所需的代码放入{{1}并且适应它。

app/views/bookmarks/_bookmarksandlikes.html.erb