如何重定向回我的主题/显示页面?

时间:2016-07-20 04:11:55

标签: ruby-on-rails routes

嘿所有这些在我的代码中我只是重定向回所有主题的索引,理论上我想重定向回页面。
这是我此页面的控制器,现在我只是使用topics_path作为支持。

class LikesController < ApplicationController
  def index
  end
  def create
   @bookmark = Bookmark.find(params[:bookmark_id])
   like = current_user.likes.build(bookmark: @bookmark)
   if like.save
       flash[:notice] = "Successfully liked bookmark."
   else
     flash.now[:alert] = 'Error in liking bookmark. Please try again.'
   end
     redirect_to topics_path
 end

 def destroy
   @bookmark = Bookmark.find(params[:bookmark_id])
   like = current_user.likes.find(params[:id])
   # Get the bookmark from the params
   # Find the current user's like with the ID in the params

   if like.destroy
     flash[:notice] = "Successfully unliked bookmark."
   else
     flash.now[:alert] = 'Error in unliking bookmark. Please try again.'
   end
   redirect_to topics_path
 end
end

这是我从耙路线到redirect_to的路线 bookmarks_show GET /bookmarks/show(.:format) bookmarks#show

1 个答案:

答案 0 :(得分:1)

如果您希望重定向回特定主题的页面...那么您需要将topic_id作为参数传递给您,以便您可以在重定向中使用它。

将其添加到您正在使用的表单/链接中,例如: (注意:完全做到这一点,显然你的代码会有所不同)

<% form_for @like do |f| %>
  <%= f.hidden_field :topic_id, @topic.id %>

然后在您的创建操作中,您只需使用例如:

重定向
 def create
   @bookmark = Bookmark.find(params[:bookmark_id])
   like = current_user.likes.build(bookmark: @bookmark)
   if like.save
     flash[:notice] = "Successfully liked bookmark."
   else
     flash.now[:alert] = 'Error in liking bookmark. Please try again.'
   end
   redirect_to topic_path(:id => params[:topic_id])
 end

注意:如果你想使用其他一些页面(例如书签页面),那么请使用它......这是一个“一般的指南”,而不是“完全按照你在这里看到的那样使用这个代码”:)