在删除时我想重定向到rails中的上一页(使用Kaminari gem to pagination)

时间:2015-08-18 05:10:49

标签: ruby-on-rails

当我从当前页面删除项目时,我想重定向到页面之前。 (即;如果总共3页,如果我删除1项,它应该重定向到第2页)。但是我得到了这个错误。

enter image description here

请给我一个解决方案

这是我的   accounts_controller.rb

def customisations
  @customises = @user.customised_dresses.all.order(id: :desc).page(params[:page]).per(1)
end

这是我的accounts/customisations.slim.html

if @customises
- if @customises.empty?
You have no items in your list
   = link_to 'Customise Dress', :customise_index, class: 'btn btn-primary'
- else - @customises.each_slice(3) do |row|
      .row
        - row.each do |c|
              = image_tag c.image_url(:preview)
                  a href="#{customised_dress_path(:id => c.id)}" data-method ="delete" rel="nofollow"
                    i.icon.ion-trash-b
                    |Delete 
   = paginate @customises`

这是我的'customised_dress_controller.rb`

def destroy
@customised_dresses = CustomisedDress.where(user_id: current_user.id, id: params[:id]).first
  respond_to do |format|
    if @customised_dresses.present?
      @customised_dresses.destroy
      last_page = @customises.total_pages
      format.html redirect_to:customisations_account(page: last_page), notice: "Customised dress has been successfully destroyed" 
    else
      format.html redirect_to:customisations_account(page: last_page), notice: 'You have no customised item.' 
    end
  end
end

1 个答案:

答案 0 :(得分:0)

在您的班级中,为ws.url=http://localhost:8080/WS/xsd/WS.xsd 属性定义attr_accessor

<sws:static-wsdl id="MyWSService" location="/web-inf/wsdl/MyWS.wsdl"/>

然后,它会起作用。

它当前失败了,因为您未在customises方法中声明attr_accessor :customises 实例变量。您在customises方法中声明了它,但想要使用destroy方法进行访问。

或者,您也可以在customisations方法中使用destroy方法代替customisations。那也行得通。所以,你可以改变这一行:

@customises

为:

destroy

这应该可以解决您的问题。如果没有,请告诉我!我可以在收到您的反馈后更新我的答案。

收到您的反馈后更新:

我认为,当您在视图中调用last_page = @customises.total_pages 方法时,您需要将last_page = customisations.total_pages 作为参数传递给customised_dress_path,以便它可以访问它。

类似的东西:

@customises

然后,在customised_dress_controller customised_dress_path(:id => c.id, :customises => @customises) 方法中抓住它:

customised_dress_controller

这样,您destroy方法中的@customises = params[:customises] 将不再是@customises