Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4控制器中的当前用户_Ruby On Rails_Ruby_Devise_Ruby On Rails 4 - Fatal编程技术网

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操作,以便用户无法编辑其他用户的列表。无论如何,谢谢你。