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 使用简单表单在表单上显示用户_Ruby On Rails_Ruby On Rails 4_Devise_Simple Form - Fatal编程技术网

Ruby on rails 使用简单表单在表单上显示用户

Ruby on rails 使用简单表单在表单上显示用户,ruby-on-rails,ruby-on-rails-4,devise,simple-form,Ruby On Rails,Ruby On Rails 4,Devise,Simple Form,我在rails项目中使用Desive和simple表单。我希望在表单上显示所有当前用户,然后能够输入每个相应员工的销售信息。我已经遍历了employee表并显示了它们,我可以创建一个表单并输入销售信息,并让它与用户相关,但由于某种原因,我似乎无法将两者结合起来。我对这一切也很了解 Schema.rb ActiveRecord::Schema.define(version: 20160812021027) do create_table "sales", force: :cascade do

我在rails项目中使用Desive和simple表单。我希望在表单上显示所有当前用户,然后能够输入每个相应员工的销售信息。我已经遍历了employee表并显示了它们,我可以创建一个表单并输入销售信息,并让它与用户相关,但由于某种原因,我似乎无法将两者结合起来。我对这一切也很了解

Schema.rb

ActiveRecord::Schema.define(version: 20160812021027) do
  create_table "sales", force: :cascade do |t|
  t.datetime "created_at",                                       null:     false
  t.datetime "updated_at",                                       null: false
  t.integer  "user_id",       limit: 4
  t.decimal  "service_sales",           precision: 10, scale: 2
  t.decimal  "retail_sales",            precision: 10, scale: 2
end   

create_table "users", force: :cascade do |t|
  t.string   "email",                  limit: 255, default: "", null: false
  t.string   "encrypted_password",     limit: 255, default: "", null: false
  t.string   "reset_password_token",   limit: 255
  t.datetime "reset_password_sent_at"
  t.datetime "remember_created_at"
  t.integer  "sign_in_count",          limit: 4,   default: 0,  null: false
  t.datetime "current_sign_in_at"
  t.datetime "last_sign_in_at"
  t.string   "current_sign_in_ip",     limit: 255
  t.string   "last_sign_in_ip",        limit: 255
  t.datetime "created_at",                                      null: false
  t.datetime "updated_at",                                      null: false
  t.string   "first_name",             limit: 255
  t.string   "last_name",              limit: 255
end

add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree

end
销售总监

class SalesController < ApplicationController
  before_action :set_sale, only: [:show, :edit, :update, :destroy]

  # GET /sales
  # GET /sales.json
  def index
    @sales = Sale.all
    @users = User.order(last_name: :desc)
  end

  # GET /sales/1
  # GET /sales/1.json
  def show
     @sales = Sale.find(params[:id])
  end

  # GET /sales/new
  def new
    @sale = Sale.new
    @user = User.all
  end

  # GET /sales/1/edit
  def edit
  end

  # POST /sales
  # POST /sales.json
  def create
    @sale = Sale.new(sale_params[:user_id])
    @sale.user = current_user

    respond_to do |format|
      if @sale.save
        format.html { redirect_to @sale, notice: 'Sale was successfully created.' }
        format.json { render :show, status: :created, location: @sale }
      else
        format.html { render :new }
        format.json { render json: @sale.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /sales/1
  # PATCH/PUT /sales/1.json
  def update
    respond_to do |format|
      if @sale.update(sale_params)
        format.html { redirect_to @sale, notice: 'Sale was successfully updated.' }
        format.json { render :show, status: :ok, location: @sale }
      else
        format.html { render :edit }
        format.json { render json: @sale.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /sales/1
  # DELETE /sales/1.json
  def destroy
    @sale.destroy
    respond_to do |format|
      format.html { redirect_to sales_url, notice: 'Sale was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

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

    # Never trust parameters from the scary internet, only allow the white list through.
    def sale_params
      params.require(:sale).permit(:service_sale, :retail_sale, :user, :user_id)
    end
end
 class User < ActiveRecord::Base
   # Include default devise modules. Others available are:
   # :confirmable, :lockable, :timeoutable and :omniauthable
   devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :trackable, :validatable
  has_many :sales
end
class SalesController
销售模式

class Sale < ActiveRecord::Base
    belongs_to :user
end
class Sale
用户控制器

class SalesController < ApplicationController
  before_action :set_sale, only: [:show, :edit, :update, :destroy]

  # GET /sales
  # GET /sales.json
  def index
    @sales = Sale.all
    @users = User.order(last_name: :desc)
  end

  # GET /sales/1
  # GET /sales/1.json
  def show
     @sales = Sale.find(params[:id])
  end

  # GET /sales/new
  def new
    @sale = Sale.new
    @user = User.all
  end

  # GET /sales/1/edit
  def edit
  end

  # POST /sales
  # POST /sales.json
  def create
    @sale = Sale.new(sale_params[:user_id])
    @sale.user = current_user

    respond_to do |format|
      if @sale.save
        format.html { redirect_to @sale, notice: 'Sale was successfully created.' }
        format.json { render :show, status: :created, location: @sale }
      else
        format.html { render :new }
        format.json { render json: @sale.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /sales/1
  # PATCH/PUT /sales/1.json
  def update
    respond_to do |format|
      if @sale.update(sale_params)
        format.html { redirect_to @sale, notice: 'Sale was successfully updated.' }
        format.json { render :show, status: :ok, location: @sale }
      else
        format.html { render :edit }
        format.json { render json: @sale.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /sales/1
  # DELETE /sales/1.json
  def destroy
    @sale.destroy
    respond_to do |format|
      format.html { redirect_to sales_url, notice: 'Sale was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

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

    # Never trust parameters from the scary internet, only allow the white list through.
    def sale_params
      params.require(:sale).permit(:service_sale, :retail_sale, :user, :user_id)
    end
end
 class User < ActiveRecord::Base
   # Include default devise modules. Others available are:
   # :confirmable, :lockable, :timeoutable and :omniauthable
   devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :trackable, :validatable
  has_many :sales
end
class用户
form.html.erb

<div class="row">
  <div class="small-6 large-centered columns">
    <table>
      <tr>
        <th>Name</th>
        <th>Service Sales</th>
        <th>Retail Sales</th>
      </tr>
      <tr>
        <% @users.each do |user| %>
          <td>
            <%= user.last_name %>,
              <%= user.first_name %>
          </td>
          <% end  %>
            <%= simple_form_for(@sale) do |f| %>
              <%= f.error_notification %>
                <div class="form-inputs">
                  <td>
                    <%= f.input :service_sales %>
                  </td>
                  <td>
                    <%= f.input :retail_sales %>
                  </td>
                </div>
      </tr>
    </table>
    <div class="form-actions">
      <%= f.button :submit %>
    </div>
    <% end %>
  </div>
</div>

名称
服务销售
零售额
,

感谢高级

使用
@users
代替控制器中的
@user

def new
   @sale = Sale.new
   @users = User.all
end

在控制器中使用
@users
代替
@user

def new
   @sale = Sale.new
   @users = User.all
end

什么是错误消息?什么是错误消息?感谢您使列表显示在表单上,但它没有保存到数据库。有什么想法吗?如果您想将当前用户id添加到sale表中,请使用
@sale.user\u id=current\u user.id
,谢谢您让列表显示在表单上,但不会保存到db中。有什么想法吗?如果您想将当前用户id添加到销售表中,请使用
@sale.user\u id=current\u user.id