Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从sinatra&;中的下拉框传递值;红宝石_Ruby_Sqlite_Sinatra - Fatal编程技术网

Ruby 从sinatra&;中的下拉框传递值;红宝石

Ruby 从sinatra&;中的下拉框传递值;红宝石,ruby,sqlite,sinatra,Ruby,Sqlite,Sinatra,看起来不管出于什么原因,sinatra都不会识别我使用的“代码”是我的get“/library”。我尝试将其放入字符串中,但没有结果。去掉引号会使它们成为未初始化的方法。非常感谢您的帮助 require 'sinatra' require 'sinatra/reloader' require 'data_mapper' enable :sessions DataMapper.setup(:default, "sqlite://#{Dir.pwd}/project3.db"

看起来不管出于什么原因,sinatra都不会识别我使用的“代码”是我的get“/library”。我尝试将其放入字符串中,但没有结果。去掉引号会使它们成为未初始化的方法。非常感谢您的帮助

  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
我的雇员再培训局网页

<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 %>
代码库
HTML

CSS
Javascript
红宝石

试着像这样通过视图

erb :project3_template
其中project3_模板将是视图文件夹中的project3_template.erb

您的@class变量应该在视图中可见,您可以像下面这样传递常规变量,
:name
在本示例中,如果由客户端通过GET或POST传递,这些变量都存在于params数组中。您还可以传递整个params数组

erb :project3_template, :locals => {:name => params[:name]}

您的观点有一个严重的问题:使用

用于嵌入必须执行的Ruby代码
用于嵌入变量的内容。 在您的情况下,您需要执行以下操作

<%@html.each do |code|%>
   <a href="/library/<%= code.id %>"><%= code.purpose %></a>
 <hr>
<%end%>



谢谢,非常感谢!