2016-01-19 142 views
1

希望有人能帮助解决这个问题。Rails 4,用link_to更新模型属性

我有2个控制器/模型:(1)用户有很多(2)评论。评论属于用户。

我想简单地在Review模型中使用link_to更新标志属性。如果用户点击'标志'链接,它会更新/修改模型'评论'中的模型属性'flag'为整数'1'。

这样的事情?

<%= link_to 'Flag', [review.user, review.flag], method: :put, data: { confirm: 'Are you sure?' } %> 

任何帮助表示赞赏!

回答

0

reviews_controller.rb方法应该是这样的:

before_action :set_review, only: [:show, :edit, :update, :destroy, :put] 

def put 
    @review.update(flag: 1) 
end 

private 
    def set_review 
     @review = Review.find(params[:id]) 
    end 
end 

假设你有标志设置为架构中的一个整数。

+0

谢谢 - link_to代码行是什么?似乎仍然得到这个错误:param丢失或值是空的:用户 – gitastic

+0

<%= link_to'旗',审查,方法:: put,data:{confirm:'你确定吗? }%> – apebeast

2

你可以这样做:

reviews_controller.rb

class ReviewsController < ApplicationController 

    def flag 
    review = Review.find(params[:id]) 
    review.flag! 
    redirect_to :back #or wherever you want to redirect to 
    end 
end 

的routes.rb

resources :reviews do 
patch :flag, on: member #reviews/1/flag 
end 

评论/ show.html.erb

<%= link_to "Flag", flag_review_path(review), method: :patch, data: { confirm: 'Are you sure?' }%> 

型号/ review.rb

class Review < ActiveRecord::Base 

def flag! 
    update_attribute(:flag, 1) 
    #If you don't want callbacks or validations use this 
    #update_columns(:flag, 1) 
end 
end 

希望这有助于!