2016-10-24 6 views
1

sinatraは私が使用する "コード"を認識できないように見えますが、それは文字列に入れても役に立たないのですか?引用符を取り除くと、それらは初期化されていないメソッドになります。ヘルプは大歓迎です!sinatraとrubyのドロップダウンボックスから値を渡す

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 

私のerbページ

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

答えて

1

はproject3_templateはあなたの意見にproject3_template.erbされるだろう。この

erb :project3_template 

あなたの@のクラス変数をフォルダのようビューを渡すようにしてくださいビューで表示する必要があります。以下のように渡すことができる通常の変数:このサンプルのは、GETまたはPOSTを介してクライアントに渡された場合、すべてがparams配列に存在します。 params配列全体を渡すこともできます。

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

は、参照してくださいhttps://github.com/sinatra/sinatra#accessing-variables-in-templates

あなたのビューには、1つの深刻な問題があります:実行する必要がありRubyコードを埋め込むためである<%%>の使用と<%=variable%>

<%%><%=variable%>は内容を埋め込むためのものです変数。 あなたの場合、あなたは次を行う必要があります

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

ありがとう、大変ありがとうございます! –

関連する問題