/ / Wert aus einer Dropdown-Box in Sinatra & Ruby übergeben - Ruby, SQLite, Sinatra

Wert aus einer Dropdown-Box in Sinatra und Ruby übergeben - Rubin, sqlite, sinatra

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 № 1

Versuchen 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%>