2016-10-24 2 views
1

sinatra는 문자열을 넣으려고했는데 아무 소용이없는 "내 코드"를 "사용"하는 코드를 인식하지 못합니다. 따옴표를 사용하면 초기화되지 않은 메서드가됩니다. 도움이 대단히 감사합니다!sinatra와 ruby의 드롭 다운 상자에서 값을 전달합니다.

<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

시도

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 페이지 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

로보기는 하나의 심각한 문제를 가지고 실행해야하는 루비 코드를 삽입위한 것입니다 <%%>의 사용과 <%=variable%>

<%%><%=variable%>가의 내용을 내장입니다 변하기 쉬운. 귀하의 경우에 다음을 수행해야합니다.

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

감사합니다. –

관련 문제