如果我采用2个值,我怎样才能在html ruby​​中读取它们

时间:2014-12-09 04:45:53

标签: html ruby-on-rails ruby

在我的控制器中,我找到了uniq笔记本和用户名。 但我希望能够检查我的HTML代码,它只显示一种类型的用户。

控制器中的

def index
  @allnotebooks = Note.uniq.pluck(:string, :notebook)
  @notes = Note.all
end

在我的HTML中

<% @allnotebooks.each do |notebook| %>
  <% if notebook.string == c_user.name %>
    <option><%= notebook %></option>
  <% end %>
<% end %>

notebook.string不起作用。我缺少什么

4 个答案:

答案 0 :(得分:1)

除了使用pluck之外,你可以用不同的方式做,使用select你可以做到  像 -

在控制器代码中 -

def index

@allnotebooks = Note.uniq.select([:string,:notebook])

@notes = Note.all

你的HTML中的

<% @allnotebooks.each do |notebook| %>

<% if notebook.string == c_user.name %>

<option><%= notebook %></option>

<% end %>

<% end %>

感谢!!!

答案 1 :(得分:0)

Pluck返回一个数组。

尝试notebook.firstnotebook[0]

文档:http://apidock.com/rails/ActiveRecord/Calculations/pluck

底部的第二个例子适用于此。

答案 2 :(得分:0)

我不是一个好红宝石的家伙,你可以像

一样写
<% @allnotebooks.each_with_index do |notebook, index| %>
<%= notebook[index].string %> => <%= notebook[index].notebook %>
<% end %>

对于“a”独特的笔记本,你需要循环吗? 只是说:

@allnotebooks.each{|notebook| <%= notebook[0] %> <%= notebook[1] %> } 

但是可以有更好的方法。

答案 3 :(得分:0)

在你的例子中应该是:

<% @allnotebooks.each do |notebook| %>
  <% if notebook[0] == c_user.name %>
    <option><%= notebook[1] %></option>
  <% end %>
<% end %>

顺便说一句,你可能只想加载字符串等于用户名字的笔记本来改善这一点。