Ruby on rails Rails 4,使用链接更新模型属性
希望有人能帮助解决这个问题 我有两个控制器/模型:(1)用户有很多(2)评论。评论属于用户 我只想在视图中使用link_to更新Review模型中的一个flag属性。如果用户单击“flag”链接,它会将模型“Review”中的模型属性“flag”更新/修补为整数“1” 像这样的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?' } %> 感
<%= 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