希望有人可以帮助解决这个问题。
我有2个控制器/模型:(1)用户有很多(2)评论。评论属于用户。
我想在视图中使用link_to简单地更新Review模型中的flag属性。如果用户单击“标记”链接,它会将模型“评论”中的模型属性“标记”更新/修补为整数“1”。
这样的东西?
<%= link_to 'Flag', [review.user, review.flag], method: :put, data: { confirm: 'Are you sure?' } %>
任何帮助表示赞赏!
答案 0 :(得分:3)
您可以执行以下操作:
<强> reviews_controller.rb 强>
resources :reviews do
patch :flag, on: :member #reviews/1/flag
end
<强>的routes.rb 强>
<%= link_to "Flag", flag_review_path(review), method: :patch, data: { confirm: 'Are you sure?' }%>
<强>评论/ show.html.erb 强>
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
<强>模型/ review.rb 强>
updateWithSubject
希望这有帮助!
更新:会员应为:会员。
答案 1 :(得分: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
假设您在架构中将标志设置为整数。
答案 2 :(得分:0)
Rails link_to
助手可以做到这一点。诀窍在于指定查询参数。如果将数组作为URL传递,则可以这样实现:
<%= link_to 'Flag', [review, { review: { flag: 1 } }], method: :patch, data: { confirm: 'Are you sure?' } %>
这将导致这样的请求:
Started PATCH "/reviews/123?review%5Bflag%5D=1"
Processing by ReviewsController#update as
Parameters: {"review"=>{"flag"=>"1"}, "id"=>"123"}
您还可以使用生成的URL帮助器方法来实现同一目的:
<%= link_to 'Flag', review_path(review, review: { flag: 1 }), method: :patch, data: { confirm: 'Are you sure?' } %>