对Ruby URL参数感到困惑

时间:2014-05-06 02:22:02

标签: ruby-on-rails ruby

我有一个问题模型,它有许多不同的字段/参数。如果我想查看所有这些内容,我只想去:

http://localhost:3002/questions

为了查看一个特定的问题,我会去

http://localhost:3002/questions/1

如何查看满足特定参数要求的问题?像

这样的东西
http://localhost:3002/questions?difficulty=1

只是给出与查看所有问题相同的结果。我知道语法上我已经走了......但是有人能引导我朝着正确的方向前进吗?如何在控制器端进行设置?

3 个答案:

答案 0 :(得分:2)

您必须拦截控制器中的参数并使用参数过滤结果。

def index
  if params[:difficulty]
    @questions = Question.where(difficulty: params[:difficulty])
  else
    @questions = Question.all
  end
end

答案 1 :(得分:0)

您可以传递参数取决于您的条件

参见示例

查看:

<%= link_to "View", questions_path(:difficulty => 1) %>

注意:您可以将动态值发送到难度参数

<强>控制器:

def index
  if params[:difficulty]
    @questions = Question.all.where(:difficulty => params[:difficulty])
  else
    @questions = Question.all
  end
end

<强>的routes.rb

resources :questions

答案 2 :(得分:-1)

您应该提供更多信息,但如果您正在运行rails框架,这可能会指出您正确的方向。我会在数据库对象中创建关联,以便它们可以共享某些特征。看看这个,看看这是否是您尝试做的,http://guides.rubyonrails.org/association_basics.html。至于控制器,您可以在此处定义调用关联的方法。