如何正确获取数组项?

时间:2013-06-05 06:35:47

标签: ruby-on-rails arrays

我有这个数据库的请求

@show = Question.where(:question_status => params[:id])

然后在@show变量中我有:[#<Question id: 38, user_id: 1, question: "hi", question_status: 1, created_at: "2013-06-04 18:32:28", updated_at: "2013-06-04 18:32:28">, #<Question id: 40, user_id: 1, question: "urll", question_status: 1, created_at: "2013-06-04 18:34:57", updated_at: "2013-06-04 18:34:57">, #<Question id: 41, user_id: 1, question: "urll", question_status: 1, created_at: "2013-06-04 18:35:31", updated_at: "2013-06-04 18:35:31">]

如何获得问题领域? 我尝试@show.question,但错误no defined method question

5 个答案:

答案 0 :(得分:1)

 @show = Question.find_by_question_status(params[:id]) 
and @show.question

如果您是我们的声明,请使用:

@show.each do |show|
  show.question
end

答案 1 :(得分:0)

@show是一个ActiveRecord :: Relation对象(Array)。它不属于Question类。

@show = Question.where(:question_status => params([:id]).first

如果您只期望一个结果。否则,您必须为每个元素迭代数组

答案 2 :(得分:0)

在rails控制台上试用此代码

@show = Question.where(:question_status => params[:id])
@show.each_with_index do |ques, index|
   p "#{index+1} :: #{ques.question}"
end

在索引的帮助下,您将获得行的序列号。

答案 3 :(得分:0)

您想要获取所有问题字段的数组吗?

questions = Question.where(:question_status => params[:id]).map(&:question)

然后你就可以像

一样
questions.each{|question| puts question }

答案 4 :(得分:0)

使用@show.map(&:question)。这将为您提供阵列中的所有问题。

@ show.question为您提供错误没有已定义的方法问题,因为您正在尝试在数组@show上运行问题。

如果你@show.first.question,它会给你第一个对象的问题。

并且

如果你做@show.map(&:question),它会给你一堆问题。

获取所有信息。

@show.each do |show|
  puts show.question
  puts show.question_status
  puts show.user_id
end

您可以根据自己的要求进行优化。