【发布时间】:2012-10-06 20:15:26
【问题描述】:
我只想做一个没有视图的 rails 动作。
在我的 'routes.rb'
resources :pictures do
member do
post 'dislike'
end
end
在我的 'PictureController.rb'
这不起作用
def dislike
@picture = Picture.find(params[:id])
@like = Like.find(:user_id => current_user.id, :picture_id => params[:id])
@like.destroy
respond_to do |format|
format.html { render :action => :show, :id => params[:id], notice: 'You don\'t like this picture anymore.' }
format.json { render json: @picture }
end
end
也不做
def dislike
@picture = Picture.find(params[:id])
@like = Like.find(:user_id => current_user.id, :picture_id => params[:id])
@like.destroy
respond_to do |format|
format.html { redirect_to @picture, notice: 'You don\'t like this picture anymore.' }
format.json { render json: @picture }
end
end
甚至这个(但对我来说不是这种情况,我希望通过 json 和 html 向用户提供反馈)
def dislike
@picture = Picture.find(params[:id])
@like = Like.find(:user_id => current_user.id, :picture_id => params[:id])
@like.destroy
render :nothing => true
end
但我不断收到此错误消息:
ActionView::MissingTemplate: Missing template pictures/dislike, application/like with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.
我应该如何告诉 rails PicturesController 中的这个动作不需要视图?
解决了!
我并没有真正解决告诉 rails 我不需要视图的问题,我只是创建了另一个控制器,将方法放入其中,并告诉 rails 路由将不喜欢操作与match 调用匹配。
我不能确定,但我认为这是我的routes.rb 文件中的resources :picture 的问题...
但无论如何,谢谢你们! =)
【问题讨论】:
-
致电
render :nothing => true -
我假设您实际上并不想渲染 :nothing ,对吧?您是在尝试渲染 json 还是显示页面?
-
是的,我想渲染一些东西,虽然
render :nothing => true也不起作用 =( -
为什么在
dislike操作中要求pictures/like模板?我开始认为我们对究竟在什么情况下会发生错误感到非常困惑。 -
刚刚编辑了问题,我粘贴了错误的错误=x
标签: ruby-on-rails rails-routing