Ruby on rails Rails中URL参数的编码和重写

Ruby on rails Rails中URL参数的编码和重写,ruby-on-rails,ruby,ruby-on-rails-3,url-rewriting,Ruby On Rails,Ruby,Ruby On Rails 3,Url Rewriting,作为Ruby和Rails的学习体验,我正在创建一个用于进行投票、存储结果等的网站。作为投票过程的一部分,用户必须处理许多问题并提供这些问题的答案。完成后,他们会收到一份基于他们提供的答案(答案类型)的建议列表 我的问题有两个部分。第一,我想我走的是正确的道路。另一方面,我甚至不知道从哪里开始,也不知道这是否是个好主意 以下是我的答案模型: class Answer attr_accessor :question_number, :description, :answer end 问题1 我

作为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
在做了一些搜索之后,似乎我想要完成的事情必须完成,但我不确定我是否完全理解如何完成

问题2

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

因此,我希望能从以下几方面得到一些东西:

http://localhost:3000/results/search/798dh832rhhbe89rbfb289f9234972bdbdbbws3
对于第二个问题,我甚至不确定这是否是一个好主意,所以我愿意接受关于这个问题的建议

在我继续探索/学习Ruby和RoR的过程中,非常感谢您对这些问题的帮助和指导。

如果我理解正确,没有任何登录系统,您希望存储在DB中的提交答案能够通过url供用户访问。您说过您不希望用户导航到其他用户的答案,但获得url的用户仍然可以共享它

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

您可以向应答对象添加一个public_id列,该列将是一个生成的大int。在post methoded submit之后,在DB中保存应答后,您可以返回一个重定向到应答public 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
def创建
答案=答案。新建(参数[:答案])
如果回答。保存
answer.generate_public_id#“error”
结束

你觉得怎么样?

1:对参数进行编码有什么意义?Rails允许您在服务器端非常轻松地捕获它,如'question=params[:question]。2:为什么通过Get方式提交数据?你不应该使用Post方法吗?@oldergod-1。我想要的功能是,我想要一个用户可以轻松返回的URL,我想要的值是唯一的,这样不同的人就不能仅仅通过玩JSON浏览到彼此的结果。2.关于POST vs.GET,这就是我有点困惑的地方,也是为什么我首先要问这个问题的原因。我可能做错了(非常非常可能),但希望这能澄清一点。