Ruby on rails 添加特定用户以查看页面上的内容
我有一个简单的rails应用程序,我将用户分为角色卖家和客户,分别id为1和2。现在我想让客户在索引页上看到与卖家不同的东西,为此我尝试了一下,但什么也没发生Ruby on rails 添加特定用户以查看页面上的内容,ruby-on-rails,devise,authorization,roles,Ruby On Rails,Devise,Authorization,Roles,我有一个简单的rails应用程序,我将用户分为角色卖家和客户,分别id为1和2。现在我想让客户在索引页上看到与卖家不同的东西,为此我尝试了一下,但什么也没发生 <div class="container-fluid"> <div class="col-md-12 text-right"> <% if role_id == 1 %> <%= link_to "Add a new Shipmen
<div class="container-fluid">
<div class="col-md-12 text-right">
<% if role_id == 1 %>
<%= link_to "Add a new Shipment", new_shipment_path, class: "btn btn-success" %>
</div>
<% else %>
<% @shipments.each do |shipment| %>
<div class="shipment">
<h3><strong><%= shipment.user.full_name%></strong></h3>
<h5><strong>DESCRIPTION: </strong><%= shipment.description %></h5>
<div class="thumbnail">
<td><%= image_tag shipment.image.url(:medium)%></td>
<div class="meta">
<%= link_to time_ago_in_words(shipment.created_at) + " ago" %> |
<%= link_to "show", shipment %>
<span class="admin">
| <%= link_to "Edit", edit_shipment_path(shipment) %> |
<%= link_to "Delete", shipment, method: :delete, data: { confirm: "Hey! Are you sure! You wanna delete this shipment??"} %>
</span>
</div>
</div>
<% end %>
</div>
</div>
<% end %>
你有两个打字错误。它是
而不是
,它是
。注意-
和=
而不是%
和=
同样重要的是要确保所有东西都正确嵌套,因为嵌套完全关闭了。你的<代码> div <代码>结束在if if块的中间,而你过早地<代码>结束<代码>你的if if块。应该是这样的:
<div class="col-md-12 text-right">
<% if role_id == 1 %>
<%= link_to "Add a new Shipment", new_shipment_path, class: "btn btn-success" %>
<% else %>
<%= link_to "something else", class: "btn btn-success" %>
<% end %>
</div>
另一个简短的评论:
更好的方式是在控制器中为卖家/客户设置一个角色变量,例如user\u role
。这会更好,因为现在不再比较ID,而是比较名称。这样您就可以执行
如果坚持使用id
而不是名称,则应将id
视为整数,例如
编辑:我修改了我的嵌套示例,使用
==1
而不是='1'
,并修复了一个打字错误。这个问题确实很棘手,但因为我没有从任何地方得到帮助
我在stackoverflow上又发布了一个关于这个问题的问题
然后这个谦逊的家伙“Rich peck”帮我摆脱了困境
感谢@Dbz的帮助,您的解决方案奏效了,但还没有完全奏效。我得到了我想要的,但是角色id为1和2。我已经用声明更新了我的问题,请看一看您没有修复
打字错误,也没有修复嵌套问题。如果您解决了这些问题,那么您可能会解决所有问题。目前,在如何嵌套ERB/HTML方面存在严重问题,您依赖web浏览器进行假设并为您修复它,这将导致特定于浏览器的错误。正确缩进ERB/HTML将是一个良好的开端。如果您仍然有问题,请使用适当间距/缩进的ERB/HTML更新您的问题。我已使用旧的索引页更新了问题。我已经用你所说的尝试了你的解决方案,但正如我所说的,现在客户和卖家都得到了相同的页面。我相信原因是,即使你拥有所有正确的ruby代码,但它在HTML中的位置不正确。您必须确保打开和关闭支架(并检查代码在尝试为您重新缩进后的外观。请发布链接内容,以便人们在查看此问题时可以看到解决方案。有时问题/答案会被删除,链接会消失。此外,请仅保留与答案相关的答案,而不是与查找答案的体验相关的答案。这一点很重要为了保持StackOverflow是一个高质量的网站,我会投票给你一旦你做了改变。
<div class="col-md-12 text-right">
<% if role_id == 1 %>
<%= link_to "Add a new Shipment", new_shipment_path, class: "btn btn-success" %>
<% else %>
<%= link_to "something else", class: "btn btn-success" %>
<% end %>
</div>
['seller', 'customer'].each do |role|
Role.where(name: role).first_or_create
end