Es sieht so aus, als würde Sinatra es aus irgendeinem Grund tunIch erkenne nicht den "Code", den ich benutze, ist mein get "/ library". Ich habe versucht, ihn in einen String zu schreiben, aber ohne Erfolg. Das Entfernen der Anführungszeichen macht sie zu einer nicht initialisierten Methode. Hilfe wird sehr geschätzt!
require "sinatra"
require "sinatra/reloader"
require "data_mapper"
enable :sessions
DataMapper.setup(:default, "sqlite://#{Dir.pwd}/project3.db")
class Code
include DataMapper::Resource
property :id, Serial
property :language, String
property :purpose, String
property :code_snippet, Text
end
DataMapper.auto_upgrade!
get "/snippet" do
erb :snippet, layout: :project3_template
end
post "/snippet" do
Code.create params
redirect to ("/library")
end
get "/library" do
@html = Code.all(language: HTML)
@css = Code.all(language: CSS)
@javascript = Code.all(language: Javascript)
@ruby = Code.all(language: Ruby)
erb :library, layout: :project3_template
end
get "/library/:id" do
@code = Code.get :id
erb :code_id, layout: :project3_template
end
meine erb seite
<h1>Code Library</h1>
<h2>HTML</h2>
<%= @html.each do |code| %>
<a href="/library/<%= code.id %>"><%= code.purpose %></a>
<hr>
<%= end %>
<h2>CSS</h2>
<%= @css.each do |code| %>
<a href="/library/<%= code.id %>"><%= code.purpose %></a>
<hr>
<%= end %>
<h2>Javascript</h2>
<%= @javascript.each do |code| %>
<a href="/library/<%= code.id %>"><%= code.purpose %></a>
<hr>
<%= end %>
<h2>Ruby</h2>
<%= @ruby.each do |code| %>
<a href="/library/<%= code.id %>"><%= code.purpose %></a>
<hr>
<%= end %>
Antworten:
1 für die Antwort № 1Versuchen Sie, die Ansicht so zu übergeben
erb :project3_template
wo project3_template wäre project3_template.erb in Ihrem Ansichtenordner
Ihre @ class Variablen sollten in der Ansicht sichtbar sein, reguläre Variablen können Sie wie folgt übergeben, :name
In diesem Beispiel wird angegeben, was passiert, wenn der Client GET oder POST durchführt. Diese sind alle im Array params vorhanden. Sie können auch das gesamte params-Array übergeben.
erb :project3_template, :locals => {:name => params[:name]}
Sehen https://github.com/sinatra/sinatra#accessing-variables-in-templates
Ihre Ansicht hat ein ernstes Problem: die Verwendung von <%%>
und <%=variable%>
<%%>
dient zum Einbetten von Ruby-Code, der ausgeführt werden muss
<%=variable%>
dient zum Einbetten des Inhalts einer Variablen. In Ihrem Fall müssen Sie Folgendes tun
<%@html.each do |code|%>
<a href="/library/<%= code.id %>"><%= code.purpose %></a>
<hr>
<%end%>