Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 4 通过id rails 4的路由问题_Ruby On Rails 4_Routes - Fatal编程技术网

Ruby on rails 4 通过id rails 4的路由问题

Ruby on rails 4 通过id rails 4的路由问题,ruby-on-rails-4,routes,Ruby On Rails 4,Routes,首先,我要道歉,因为就在我认为我掌握了路线的时候,我发现我没有 当注册用户登录到我的应用程序时,他们会被带到“管理索引”视图,我所要做的就是在该视图中显示他们的用户名 这是我的路线配置:- Easygifts::Application.routes.draw do get 'admin' => 'admin#index' controller :sessions do get 'login' => :new post 'login' =&

首先,我要道歉,因为就在我认为我掌握了路线的时候,我发现我没有

当注册用户登录到我的应用程序时,他们会被带到“管理索引”视图,我所要做的就是在该视图中显示他们的用户名

这是我的路线配置:-

Easygifts::Application.routes.draw do
  get 'admin' => 'admin#index' 
    controller :sessions do
        get 'login' => :new
        post 'login' => :create
        delete 'logout' => :destroy
    end
  get "sessions/create"
  get "sessions/destroy"
  resources :users 
  resources :admin 

    resources :stores do
        collection do
          get "writing"
          get "office"
          get "time"
          get "home"
          get "wellness"
          get "travel"
          get "bags"
          get "leisure"
          get "contact"
          get "terms"
         end
          member do
          get 'quote'
         end
        end

    resources :products
用户通过会话控制器登录,并被传递到管理员控制器索引视图。我尝试使用以下内容显示他们的姓名:-欢迎

会话控制器:-

class SessionsController < ApplicationController
    skip_before_action :authorize
  def new
  end

  def create
    user = User.find_by(name: params[:name])
    if user and user.authenticate(params[:password]) 
        session[:user_id] = user.id 
        redirect_to admin_url 
    else 
        redirect_to login_url, alert: "Invalid user/password combination" 
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to stores_url, notice: "Logged out"
  end
end
class UsersController < ApplicationController
  before_action :set_user, only: [:show, :edit, :update, :destroy]

  # GET /users
  # GET /users.json
  def index
    @users = User.order(:name)
  end

  # GET /users/1
  # GET /users/1.json
  def show
  end

  # GET /users/new
  def new
    @user = User.new
  end

  # GET /users/1/edit
  def edit
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully created." }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /users/1
  # PATCH/PUT /users/1.json
  def update
    respond_to do |format|
      if @user.update(user_params)
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully updated." }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /users/1
  # DELETE /users/1.json
  def destroy
    begin 
    @user.destroy
        flash[:notice] = "User #{@user.name} deleted" 
    rescue StandardError => e 
        flash[:notice] = e.message
    end
    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      params.require(:user).permit(:name, :password, :password_confirmation, :add1, :add2, :add3, :add4, :post_code, :home_tel, :mobile, :ice_tel, :ni_number, :position, :image_url, :staff_num, :start_date, :birthday)
    end
end
class AdminController < ApplicationController
  def index
  @users = User.find(params[:id])
  end
end
用户控制器:-

class SessionsController < ApplicationController
    skip_before_action :authorize
  def new
  end

  def create
    user = User.find_by(name: params[:name])
    if user and user.authenticate(params[:password]) 
        session[:user_id] = user.id 
        redirect_to admin_url 
    else 
        redirect_to login_url, alert: "Invalid user/password combination" 
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to stores_url, notice: "Logged out"
  end
end
class UsersController < ApplicationController
  before_action :set_user, only: [:show, :edit, :update, :destroy]

  # GET /users
  # GET /users.json
  def index
    @users = User.order(:name)
  end

  # GET /users/1
  # GET /users/1.json
  def show
  end

  # GET /users/new
  def new
    @user = User.new
  end

  # GET /users/1/edit
  def edit
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully created." }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /users/1
  # PATCH/PUT /users/1.json
  def update
    respond_to do |format|
      if @user.update(user_params)
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully updated." }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /users/1
  # DELETE /users/1.json
  def destroy
    begin 
    @user.destroy
        flash[:notice] = "User #{@user.name} deleted" 
    rescue StandardError => e 
        flash[:notice] = e.message
    end
    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      params.require(:user).permit(:name, :password, :password_confirmation, :add1, :add2, :add3, :add4, :post_code, :home_tel, :mobile, :ice_tel, :ni_number, :position, :image_url, :staff_num, :start_date, :birthday)
    end
end
class AdminController < ApplicationController
  def index
  @users = User.find(params[:id])
  end
end
和管理员控制器:-

class SessionsController < ApplicationController
    skip_before_action :authorize
  def new
  end

  def create
    user = User.find_by(name: params[:name])
    if user and user.authenticate(params[:password]) 
        session[:user_id] = user.id 
        redirect_to admin_url 
    else 
        redirect_to login_url, alert: "Invalid user/password combination" 
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to stores_url, notice: "Logged out"
  end
end
class UsersController < ApplicationController
  before_action :set_user, only: [:show, :edit, :update, :destroy]

  # GET /users
  # GET /users.json
  def index
    @users = User.order(:name)
  end

  # GET /users/1
  # GET /users/1.json
  def show
  end

  # GET /users/new
  def new
    @user = User.new
  end

  # GET /users/1/edit
  def edit
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully created." }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /users/1
  # PATCH/PUT /users/1.json
  def update
    respond_to do |format|
      if @user.update(user_params)
        format.html { redirect_to users_url, notice: "User #{@user.name} was successfully updated." }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /users/1
  # DELETE /users/1.json
  def destroy
    begin 
    @user.destroy
        flash[:notice] = "User #{@user.name} deleted" 
    rescue StandardError => e 
        flash[:notice] = e.message
    end
    respond_to do |format|
      format.html { redirect_to users_url }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def user_params
      params.require(:user).permit(:name, :password, :password_confirmation, :add1, :add2, :add3, :add4, :post_code, :home_tel, :mobile, :ice_tel, :ni_number, :position, :image_url, :staff_num, :start_date, :birthday)
    end
end
class AdminController < ApplicationController
  def index
  @users = User.find(params[:id])
  end
end
我的第一个困惑点是我应该通过会话控制器还是用户控制器

如果它在会话控制器中,我应该写一些像get'adminindex'=>:show这样的东西吗

或者,如果是在用户中,我是否需要编写类似于资源的内容:用户是否需要成员是否需要“admin”end


我想我必须定义一个控制器,在我的路线内有一个动作,但我不知道在这种情况下如何确定谁在做什么。

我不能完全确定我是否理解您的问题,但是,如果您试图显示当前登录用户的某些信息,而不将其发送到显示其id的位置,则可以执行@user=user.findsession[:user_id]ptd,非常感谢您立即解决了我的问题。我认为我们正在会话控制器中传递用户id作为@user的参数,对吗?