0

作为 Ruby 和 Rails 的学习经验,我正在创建一个用于进行投票、存储结果等的网站。作为投票过程的一部分,用户必须通过一些问题并为这些问题提供答案。完成后,他们会收到基于他们提供的答案(答案类型)的建议列表。

我的问题有两个部分。一,我认为我走在正确的道路上。另一个,我什至不知道从哪里开始,也不知道这是否是个好主意。

这是我的答案模型:

class Answer
  attr_accessor :question_number, :description, :answer
end

问题 1

我正在寻找一种方法,当用户提交所有答案(我将他们的响应存储在会话存储中)时,它会转到我的搜索功能 - 但它的编码很好。

代替:

http://localhost:3000/results/search?[biglongstringofdifferentanswers]

我想要类似的东西:

http://localhost:3000/results/search/1-answer_2-answer_3-answer

在做了一些搜索之后,似乎我想要完成的事情必须使用#parameterize 方法来完成,但我不确定我是否理解如何准确地做到这一点。

问题2

我的问题的第二部分是 - 我可以对我的答案进行编码,以便它们不能直接被人类阅读。我想这样做是为了防止人们浏览彼此的答案。例如,第一个答案始终是该人的唯一 ID,我不希望某人能够通过切换参数来浏览任何旧的结果集。

所以,我希望得到一些类似的东西:

http://localhost:3000/results/search/798dh832rhhbe89rbfb289f9234972bdbdbbws3

对于第二个问题,我什至不确定这是否是一个好主意,所以我愿意接受对此问题的建议。

在我继续探索/学习 Ruby 和 RoR 时,感谢有关这些问题的任何帮助和指导。

4

1 回答 1

0

如果我做对了,则没有任何登录系统,并且您希望存储在数据库中的提交答案可以通过用户的 url 访问。您说您不希望用户导航到其他用户的答案,但获取 url 的用户仍然可以共享它

我要做的是通过 POST 方法提交答案,因此您不必担心对参数进行编码等。使用 Rails 变得非常容易。

您可以将 public_id 列添加到您的答案对象,这将是一个生成的大整数。在 post 方法提交之后,一旦您将答案保存在数据库中,您就可以将重定向返回到答案公共 id url。

就像是

def create
  answer = Answer.new(params[:answer])
  if answer.save
    answer.generate_public_id # <= would be nice to add if in the answer model 'after_create' filter probably
    return redirect_to public_id_answer_path
  end
  render :partial => 'error'
end

你怎么看 ?

于 2012-08-08T01:10:47.340 回答