Je fais un bref exercice, condensé ci-dessous. Le problème que je suis est que je suis en mesure de passer une sélection de tous les billets, mais pas une sélection d'un billet. A/il n'y a pas de problème la liste de tous les billets, au point final pour un billet que je reçois:Sinatra, sélectionnez de Datamapper passer à Haml
NoMethodError at /pi2l9ulnw
undefined method `slug' for #<Enumerable::Enumerator:0x7f04eb043b88>
Je suis relativement nouveau à Ruby et de copier-coller, mais il semble passer @ticket
pour obtenir @ticket.slug
est juste de la Documentation Sinatra. Je suis arrivé à ce point et j'ai atteint une impasse où j'essaie de créer un point de terminaison simple pour 1 ticket. Toutes les suggestions pendant que j'essaye de lire ce que je fais, merci.
Exemple ci-dessous condensé 1 fichier:
require 'rubygems'
require 'sinatra'
require 'haml'
require 'dm-core'
require 'dm-validations'
require 'dm-types'
require 'dm-migrations'
require 'sqlite3'
configure do
class Ticket
include DataMapper::Resource
property :id, Serial # unique key
property :slug, String # unique slug as endpoint
property :created_at, DateTime # created
property :content, Text # content of ticket
validates_uniqueness_of :slug
end
set :sessions , true
DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default , "sqlite3://#{Dir.pwd}/development.sqlite3")
DataMapper.finalize
DataMapper.auto_upgrade!
end
error do
e = request.env['sinatra.error']
Kernel.puts e.backtrace.join("\n")
'Application error'
end
helpers do
def sluggenerate
rand(2**256).to_s(36)[0..8]
end
end
get '/' do
@tickets = Ticket.all(:order => [ :created_at.desc ])
haml :index
end
get '/new' do
haml :new
end
post '/new' do
p params
@ticket = Ticket.new(:slug => sluggenerate,:content => params[:content])
if @ticket.save
redirect '/'
else
redirect '/new'
end
end
get '/:slug' do
@ticket=Ticket.find(params[:slug])
haml :ticket
end
__END__
@@ layout
%html
= yield
@@ new
%h1 NEW TICKET
%form{:action => '/new', :method => 'post'}
%p
%input{:type => "text", :name => "content", :id => "content" }
%input{:type => "submit", :value => "post"}
@@ index
%div{:class => "tickets"}
- @tickets.each do |ticket|
%div{:class => "ticket"}
%h2
%a{:href => "/#{ticket.slug}" }
= ticket.slug
%div{:class => "tickettime"}
= ticket.created_at
%div{:class => "ticketcontent"}
= ticket.content
@@ ticket
%div{:class => "ticket"}
= @ticket.slug
Hey, une chance vous pourriez marquer quelle réponse est la vôtre est correcte? Je suis intrigué quant à ce qui l'a réparé :) – Tom