1
我正在实现社区博客应用程序中的“收藏夹”功能,并且想要使用Ajax。使用Ajax在Rails中创建新记录的故障诊断
当用户喜欢首页帖子时,有一个“+”符号,他们可以点击将该帖子添加到他们的收藏夹中。
该功能在没有Ajax功能的情况下效果很好。但现在我添加了Ajax。
在视图:
<span id="favorite_<%= entry.id %>">
<%= link_to_remote "+", :url => { :action => 'add_favorite' },
:entry => entry.id,
:user => session[:user_id],
:update => 'favorite_' + entry.id.to_s %>
</span>
相应的控制器动作:
def add_favorite
@favorite = Favorite.new(:entry_id => :entry, :user_id => :user)
if @favorite.save
render :text => "added to favorites", :layout => false
end
end
文本被恰当地渲染在视图中,仿佛动作已工作。但是当我查看收藏夹列表时,它并没有被添加。
我跑在交互shell行
@favorite = Favorite.new(:entry_id => :entry, :user_id => :user)
,它是所有好的。一切都得救了
我在忽略/做错什么?
谢谢tadman!解决方案的另一半是包含:entry_id和:user_id作为url的一部分(:url => {here})。 – txpost 2010-08-09 21:13:19
你也是对的。不要忘记,许多模型可能有一个自定义的'#to_param'方法,您应该使用它来代替'#id'。唯一适合使用'#id'的地方就像是一个唯一的标识符,就像你的DOM ID一样,或者在构建SQL时。对于URL,请始终使用'#to_param'。 – tadman 2010-08-10 14:43:04