Ruby / Sinatra中的范围

时间:2009-12-17 21:53:06

标签: ruby parameters sinatra

我正在尝试识别用户ID号,从ActiveRecord表中获取学生行,但由于某种原因,“post”块将找不到我的:id。

对于'get',网址为localhost:9456 / update / 17。这是我需要传递到'post'块来更新数据库。

我不知道该怎么做。解析URL?好像我错过了一些明显的东西。

# update user page
get '/update/:id' do
  @student = Student.find(params[:id]) #this returns ID=17
  erb :update
end

#update user submit
post '/update' do
  @student = Student.find(params[:id])  #this line doesn't work
  @student.name = (params[:name])
  @student.email = (params[:email])
  @student.save
  redirect '/'
end

谢谢!

1 个答案:

答案 0 :(得分:5)

你实际上正在通过id吗?您是通过POST提交表单吗?如果是这样,您需要做的就是添加name属性为id的输入。

<form action='/student/update' method='post'>
  <input type='hidden' name='id' value='17' />
</form>