试图在Rails 4中存档特定的反馈

时间:2016-05-18 10:54:44

标签: ruby-on-rails ruby-on-rails-4 archive

我创建了一个反馈系统,并尝试获取特定的反馈归档。我尝试了多种不同的配置,但似乎无法让它工作。我没有收到错误,看起来它正在接收控制器操作,因为我收到通知。但是,布尔值在DB中不会改变,特定的反馈也不会隐藏。

任何帮助将不胜感激!

  • 我在我的表中添加了一个Archive boolean。
  • 我创建了一个归档路径。
  • 我已经为归档创建了控制器操作。

这是我的代码:

**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>

另外,如果归档后我如何才能隐藏反馈?

3 个答案:

答案 0 :(得分:0)

@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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

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