2016-01-19 143 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 

希望這有助於!