Sto provando a creare una funzionalità 'tag' che consente a un utente di "taggare" gli elementi a cui sono interessati. Qui è il mio modelloRails 3 - Come si crea un nuovo record da link_to
class tag
belongs_to :user
belongs_to :item
end
La tabella di DB corrispondente ha le necessarie :user_id
e :item_id
campi.
Nell'elenco di :items
Desidero un collegamento accanto a ogni :item
che consente all'utente di contrassegnare lo :item
. Poiché conosco lo :user_id
e lo :item_id
, desidero creare un nuovo record :tag
, impostare i campi ID e salvare il record, il tutto senza alcun intervento da parte dell'utente. Ho provato la seguente chiamata a link_to
, ma nessun record viene salvato nel database:
<%= link_to 'Tag it!', {:controller => "tracks",
:method => :post,
:action => "create"},
:user_id => current_user.id,
:item_id => item.id %>
(Questo codice è all'interno di un:. @item.each do |item|
dichiarazione, in modo item.id è valido)
Questo crea di link_to
questo URL:
http://localhost:3000/tags?method=post&tag_id=7&user_id=1
che non crea un record Tag
nel database. Qui è la mia :create
azione nel tags_controller
def create
@tag = Tag.new
@tag.user_id = params[:user_id]
@tag.tag_id = params[:tag_id]
@tag.save
end
Come posso ottenere link_to per creare e salvare un nuovo record tag?
Grazie! Funziona benissimo con la tua correzione. Mostrare il link alla firma nella tua risposta mi ha davvero aiutato a capire finalmente cosa stava succedendo. Molto apprezzato. –
Solo un rapido commento. Nell'hash url_options il valore della chiave del controller dovrebbe essere "items" e non "item". Ti darebbe un errore di routing ActionController quando provi a visualizzare il link. – icantbecool
@dexter, cosa succede se il collegamento è esterno all'app, ad esempio in un'email, ad esempio? Il mio caso d'uso è per RSVP. Voglio creare un nuovo RSVP direttamente dal link di posta elettronica, ma voglio rimanere RESTful. – Mohamad