J'ai les données suivantes. Chaque article a un titre et un corps et aussi jusqu'à trois URL. Je voudrais stocker les URL dans une table différente. Donc dans ma forme, j'ai un champ pour les urls. Cependant, ils ne fonctionnent pas, seuls les champs article sont entrés dans la base de données. comment devrais-je les spécifier? Est-ce que n'importe quelle âme aimable m'aiderait avec ceci?Sinatra et Datamapper - insertion de données dans une table de relation un à plusieurs
class Article
include DataMapper::Resource
property :id, Serial
property :title, String
property :body, Text
has n, :urls, through => Resource
end
class Url
include DataMapper::Resource
property :id, Serial
property :url_01, String
property :url_02, String
property :url_03, String
belongs_to :article
end
post '/create' do
@article = Article.new(params[:article])
if @article.save
redirect "/articles"
else
redirect "/articles/new"
end
end
--------------------------------------
<form action="/create" method="post">
<p>
<label>Article Title</label>
<input type="text" name="article[title]">
</p>
<p>
<label>Article Body</label>
<input type="text" name="article[body]">
</p>
<p>
<label>Url</label>
<input type="text" name="article[url_01]">
</p>
<p>
<input type="submit">
</p>
qu'en est-il du formulaire? ne fonctionne pas, l'entrée n'est pas enregistrée dans la base de données. –
Dans l'exemple ci-dessus, il a juste "url" comme champ dans le formulaire html. Si vous montrez les trois, alors vous devrez mettre à jour le constructeur url.new avec les trois du formulaire html. –