Ruby on rails Rails 4控制器中的当前用户
我有一个Ruby on rails Rails 4控制器中的当前用户,ruby-on-rails,ruby,devise,ruby-on-rails-4,Ruby On Rails,Ruby,Devise,Ruby On Rails 4,我有一个Listings控制器,用户可以在其中创建自己的列表 为了防止用户编辑其他用户列表,我只需更新来自的每个操作 Listing to current_user.listings 但是在Rails 4中,控制器发生了变化,我找不到如何设置它 我的控制器文件-> class ListingsController < ApplicationController before_action :set_listing, only: [:show, :edit, :update, :des
Listings控制器
,用户可以在其中创建自己的列表
为了防止用户编辑其他用户列表,我只需更新来自的每个操作
Listing to current_user.listings
但是在Rails 4中,控制器发生了变化,我找不到如何设置它
我的控制器文件->
class ListingsController < ApplicationController
before_action :set_listing, only: [:show, :edit, :update, :destroy]
before_filter :authenticate_user!, :only => [:index]
# GET /listings
# GET /listings.json
def index
@listings = Listing.all
end
# GET /listings/1
# GET /listings/1.json
def show
end
# GET /listings/new
def new
@listing = Listing.new
end
# GET /listings/1/edit
def edit
end
# POST /listings
# POST /listings.json
def create
@listing = Listing.new(listing_params)
respond_to do |format|
if @listing.save
format.html { redirect_to @listing, notice: 'Listing was successfully created.' }
format.json { render action: 'show', status: :created, location: @listing }
else
format.html { render action: 'new' }
format.json { render json: @listing.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /listings/1
# PATCH/PUT /listings/1.json
def update
respond_to do |format|
if @listing.update(listing_params)
format.html { redirect_to @listing, notice: 'Listing was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @listing.errors, status: :unprocessable_entity }
end
end
end
# DELETE /listings/1
# DELETE /listings/1.json
def destroy
@listing.destroy
respond_to do |format|
format.html { redirect_to listings_url }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_listing
@listing = Listing.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def listing_params
params.require(:listing).permit(:title, :description)
end
end
class ListingsController[:索引]
#获取/列表
#GET/listings.json
def索引
@listings=Listing.all
结束
#获取/listings/1
#GET/listings/1.json
def秀
结束
#获取/列表/新建
def新
@listing=listing.new
结束
#获取/列表/1/编辑
定义编辑
结束
#张贴/列表
#POST/listings.json
def创建
@listing=listing.new(listing_参数)
回应待办事项|格式|
if@listing.save
format.html{将_重定向到@listing,注意:“listing已成功创建”。}
format.json{呈现操作:“显示”,状态::已创建,位置:@listing}
其他的
format.html{呈现操作:'new'}
format.json{render json:@listing.errors,status::unprocessable_entity}
结束
结束
结束
#补丁/PUT/listings/1
#PATCH/PUT/listings/1.json
def更新
回应待办事项|格式|
if@listing.update(列表参数)
format.html{将_重定向到@listing,注意:'列表已成功更新。}
format.json{head:no_content}
其他的
format.html{呈现操作:“编辑”}
format.json{render json:@listing.errors,status::unprocessable_entity}
结束
结束
结束
#删除/列表/1
#删除/listings/1.json
def销毁
@listing.destroy
回应待办事项|格式|
format.html{redirect_to listings_url}
format.json{head:no_content}
结束
结束
私有的
#使用回调在操作之间共享公共设置或约束。
def set_列表
@listing=listing.find(参数[:id])
结束
#永远不要相信来自恐怖网络的参数,只允许白名单通过。
def列表参数
参数require(:listing).permit(:title,:description)
结束
结束
有人知道解决方案吗?从“新建”改为“新建”。因此,将所有@listing=listing.new
更改为:
@listing = current_user.listings.build
然后,在set_列表中更改为:
@listing = current_user.listings.find(params[:id])
从“新建”改为“新建”。因此,将所有@listing=listing.new
更改为:
@listing = current_user.listings.build
然后,在set_列表中更改为:
@listing = current_user.listings.find(params[:id])
实际上,当另一个用户试图查看ListingsController#show中的Listing->ActiveRecord::RecordNotFound时,这就给了我一个问题。找不到id=13的列表[其中“listings”。“user_id”=?]我找到了解决方案,问题是1.)你的观点,2.)必须更改Def操作,以便用户无法编辑其他用户的列表。无论如何,谢谢。实际上,当另一个用户试图查看ListingsController#show中的列表->ActiveRecord::RecordNotFound时,这给了我一个问题。找不到id=13的列表[其中“listings”。“user_id”=?]我找到了解决方案,问题是1.)你的观点,2.)必须更改Def操作,以便用户无法编辑其他用户的列表。无论如何,谢谢你。