编辑博客文章时没有收到Sinatra的数据

时间:2014-06-22 11:37:21

标签: ruby sinatra slim-lang sqlite3-ruby

我跟随this Sinatra blog post在Ruby Sinatra中建立我自己的博客,唯一的区别是我的模板是苗条而不是ERB。

我遇到的问题是保存已编辑的帖子。这些帖子实际上已保存,但它没有将我重定向到最近编辑过的页面,Chrome正在向我提供"没有收到数据错误",错误代码:ERR_EMPTY_RESPONSE

所以我的问题是如何处理收到的无数据?

Sinatra路线

get '/posts/:id/edit' do
    @post = Post.find(params[:id])
    @title = 'Edit Post'

    slim :'posts/edit'
end

put '/posts/:id' do
   @post = Post.find(params[:id])
   if @post.update_attributes(params[:post])
     redirect '/posts/#{@post.id}'
   else
     slim :'posts/edit'
   end
end

超薄模板

h1 Edit Post
  form action="/posts/#{@post.id}" method="post"
    input type="hidden" name="_method" value="put"

    label for="post_title" Title:
    input id="post_title" name="post[title]" type="text" value="#{@post.title}"

    label for="post_body" Body:
    textarea id="post_body" name="post[body]" rows="5" #{@post.body}

    input type="submit" value="Save"

我正在使用sqlite3作为博客数据库[如博客所述]。

1 个答案:

答案 0 :(得分:2)

哦,问题出在这里:您在重定向中有#{...},但它被单引号包围:'。 Ruby没有解释单引号内的插值,只能在"双引号内解释。因此,如果您将该行更改为redirect "/posts/#{@post.id}",它应该可以正常工作。