Ruby on rails Rails 4,使用链接更新模型属性

Ruby on rails Rails 4,使用链接更新模型属性,ruby-on-rails,ruby-on-rails-4,model,controller,link-to,Ruby On Rails,Ruby On Rails 4,Model,Controller,Link To,希望有人能帮助解决这个问题 我有两个控制器/模型:(1)用户有很多(2)评论。评论属于用户 我只想在视图中使用link_to更新Review模型中的一个flag属性。如果用户单击“flag”链接,它会将模型“Review”中的模型属性“flag”更新/修补为整数“1” 像这样的 <%= link_to 'Flag', [review.user, review.flag], method: :put, data: { confirm: 'Are you sure?' } %> 感

希望有人能帮助解决这个问题

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

我只想在视图中使用link_to更新Review模型中的一个flag属性。如果用户单击“flag”链接,它会将模型“Review”中的模型属性“flag”更新/修补为整数“1”

像这样的

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


感谢您的帮助

您的
检查\u 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
<%= 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"}

假设您在模式中将标志设置为整数。

您的
检查\u 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
<%= 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"}

假设您在模式中将标志设置为整数。

您可以执行以下操作:

审查\u 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
resources :reviews do
 patch :flag, on: :member #reviews/1/flag
end
<%= link_to "Flag", flag_review_path(review), method: :patch,  data: { confirm: 'Are you sure?' }%>
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
评论/show.html.erb

class ReviewsController < ApplicationController

  def flag
   review = Review.find(params[:id])
   review.flag!
   redirect_to :back #or wherever you want to redirect to
  end
end
resources :reviews do
 patch :flag, on: :member #reviews/1/flag
end
<%= link_to "Flag", flag_review_path(review), method: :patch,  data: { confirm: 'Are you sure?' }%>
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

models/review.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
resources :reviews do
 patch :flag, on: :member #reviews/1/flag
end
<%= link_to "Flag", flag_review_path(review), method: :patch,  data: { confirm: 'Are you sure?' }%>
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
class Review
希望这有帮助


更新:成员应为:成员。

您可以执行以下操作:

审查\u 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
resources :reviews do
 patch :flag, on: :member #reviews/1/flag
end
<%= link_to "Flag", flag_review_path(review), method: :patch,  data: { confirm: 'Are you sure?' }%>
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
评论/show.html.erb

class ReviewsController < ApplicationController

  def flag
   review = Review.find(params[:id])
   review.flag!
   redirect_to :back #or wherever you want to redirect to
  end
end
resources :reviews do
 patch :flag, on: :member #reviews/1/flag
end
<%= link_to "Flag", flag_review_path(review), method: :patch,  data: { confirm: 'Are you sure?' }%>
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

models/review.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
resources :reviews do
 patch :flag, on: :member #reviews/1/flag
end
<%= link_to "Flag", flag_review_path(review), method: :patch,  data: { confirm: 'Are you sure?' }%>
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
class Review
希望这有帮助


更新:成员应该是:成员。

Rails
链接到
帮助程序可以做到这一点。诀窍在于指定查询参数。如果要将数组作为URL传递,可以这样实现:

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
<%= 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?' } %>

Rails
链接到
帮助程序可以执行此操作。诀窍在于指定查询参数。如果要将数组作为URL传递,可以这样实现:

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
<%= 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?' } %>


谢谢-到代码行的链接是什么?似乎仍然会出现以下错误:param丢失或值为空:userThank-到代码行的链接是什么?似乎仍会出现以下错误:缺少参数或值为空:user