【发布时间】:2014-03-08 20:18:53
【问题描述】:
我遇到的问题是 Sinatra 应用程序在某些特定的超链接上下文中使用时似乎并不总是显示我的 ERB。我不知道这个问题与显示多少相关,所以我会尽我所能。基本上,我的 Sinatra 应用程序中有一个名为 book_show.erb 的文件。它有以下一行:
<p><a href="/books/#{@book.id}/edit">Edit Book</a></p>
但是,当该链接在浏览器中呈现时,它的链接如下:
http://localhost:9292/books/#{@book.id}/edit
#{@book.id} 未替换为实际 ID 值。有一个 @book 对象,我确实在同一个文件的其他上下文中使用它。例如:
<h1><%= @book.series %></h2>
<h2><%= @book.title %></h2>
<h3>Timeframe:</h3>
<p><%= @book.timeframe %></p>
我什至不知道我的路线是否会对诊断产生影响,但我的图书功能的所有相关路线都是:
get '/books' do
@title = 'Book Database'
@books = Book.all
erb :books
end
get '/books/new' do
@book = Book.new
erb :book_add
end
get '/books/:id' do
@book = Book.get(params[:id])
erb :book_show
end
post '/books' do
book = Book.create(params[:book])
redirect to("/books/#{book.id}")
end
我不知道还能显示什么来帮助诊断此问题。我希望有人能看到我遗漏的非常明显的东西。
将一本书添加到数据库中就可以了;只有那个编辑链接我无法正常工作——这似乎是纯 HTML/ERB。为了测试它,我还在页面中添加了这一行:
<p>Testing: <%= "/books/#{@book.id}/edit" %>
返回并返回此文本:
Testing: /books/4/edit
所以我知道 ID 正在被存储。它必须与超链接有关,但我在 Sinatra 上找不到任何有用的信息。
【问题讨论】: