尝试在 Rails 4 中存档特定反馈

Trying to archive a specific feedback in Rails 4

我已经创建了一个反馈系统,并且正在尝试获取特定的反馈以进行存档。我尝试了多种不同的配置,但似乎无法正常工作。我没有收到错误,看起来它在我收到通知时正在执行控制器操作。但是,布尔值不会在数据库中更改,特定反馈也不会隐藏。

如有任何帮助,我们将不胜感激!

这是我的代码:

**Controller:**

def archive_feedback
 @listing_feedback = ListingFeedback.find(params[:id])

 respond_to do |format|
   format.html { redirect_to listing_listing_feedbacks_path, notice: "That feedback has been archived." }
   format.json { render :index }
 end
end

**Routes: (My feedback feature is using nested resources)**

resources :listings do
  member do
   get 'like'
   get 'unlike'
   get 'duplicate'
   get 'gallery'
   delete 'gallery' => 'listings#clear_gallery'
   get 'manage_photos'
   get 'craigslist'
   get "add_to_collection"
  end
  resources :listing_feedbacks do
    member do
     put 'archive_feedback'
  end
 end
end

**Index.html.erb:**

<p><%= link_to 'Archive', controller: "listing_feedbacks", action: "archive_feedback", id: listing_feedback.id, archive: :true, method: :put %></p>

此外,如何让反馈在存档后隐藏起来?

没有更新 @listing_feedback archive_feedback 方法。改成下面

def archive_feedback
 @listing_feedback = ListingFeedback.find(params[:id])
 @listing_feedback.update(archive: true)

 respond_to do |format|
   format.html { redirect_to listing_listing_feedbacks_path, notice: "That feedback has been archived." }
   format.json { render :index }
 end
end

您是否将新的存档属性添加到控制器中的请求参数中?
否则不会保存到数据库中。

private
def listing_feedback_params  
params.require(:listing_feedback).permit :archive  
end
I think ..

you have to write as below in controller


def archive_feedback
 @listing_feedback = ListingFeedback.find(params[:id])

 @listing_feedback.destroy
   or
 @listing_feedback.update_attribute(archive: true)

 respond_to do |format|
   format.html { redirect_to listing_listing_feedbacks_path, notice: "That feedback has been archived." }
   format.json { render :index }
 end
end