我试图创建一个'标记'功能,它允许用户“标记”他们感兴趣的项目。这里是我的模型Rails 3 - 你如何创建一个新的记录从link_to
class tag
belongs_to :user
belongs_to :item
end
相应的数据库表有必要:user_id
和:item_id
领域。
在:items
的列表中,我希望每个:item
旁边的链接都允许用户标记:item
。由于我知道:user_id
和:item_id
,我想创建一个新的:tag
记录,设置ID字段并保存记录 - 所有这些都不需要用户干预。我尝试了以下调用link_to
,但没有记录在数据库中保存:
<%= link_to 'Tag it!', {:controller => "tracks",
:method => :post,
:action => "create"},
:user_id => current_user.id,
:item_id => item.id %>
(此代码是一个内:@item.each do |item|
语句,所以item.id有效)
这link_to
调用创建此网址:
http://localhost:3000/tags?method=post&tag_id=7&user_id=1
这不会在数据库中创建Tag
记录。下面是我在tags_controller
def create
@tag = Tag.new
@tag.user_id = params[:user_id]
@tag.tag_id = params[:tag_id]
@tag.save
end
我怎样才能得到的link_to创建并保存新的标签记录:create
行动?
谢谢!它适用于您的修复。在回答中显示link_to签名确实帮助我最终了解发生了什么。非常感激。 –
只是一个快速的评论。在url_options散列中,控制器键的值应该是“items”而不是“item”。尝试显示链接时,它会给你一个ActionController路由错误。 – icantbecool
@dexter,如果链接不在应用程序之外,例如在电子邮件中会发生什么情况?我的使用案例是针对RSVP的。我想直接从电子邮件链接创建一个新的RSVP,但我想保持RESTful。 – Mohamad