我一直在学习铁轨和红宝石。我编码和应用程序,一个用户有很多购买和销售。我一直在做所有教程并在SOF中寻找许多答案,但没有成功,所以这是我的问题:
SellsController中的NoMethodError #create 未定义的方法`出售'#
我的用户是西班牙语的“usuario”。
我知道我在某个地方遗漏了一些东西,因为我已经用购买的方式做了这件事并且工作得很好。这些是我的文件
Usuario.rb(型号)
class Usuario < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :sells
has_many :buys
end
有“Has_many”
Sell.rb(型号)
class Sell < ActiveRecord::Base
belongs_to :usuario
after_create :set_estado
private
def set_estado
self.estado = true
end
end
该方法是因为我试图将“estado”(状态)设置为true。
出售控制器
class SellsController < ApplicationController
before_action :set_sell, only: [:show, :edit, :update, :destroy]
before_action :authenticate_usuario!
# GET /sells
# GET /sells.json
def index
@sells = Sell.all
end
# GET /sells/1
# GET /sells/1.json
def show
end
# GET /sells/new
def new
@sell = Sell.new
end
# GET /sells/1/edit
def edit
end
# POST /sells
# POST /sells.json
def create
@sell = current_usuario.sell.new(sell_params)
respond_to do |format|
if @sell.save
format.html { redirect_to @sell, notice: 'La venta ha sido creada con exito' }
format.json { render :show, status: :created, location: @sell }
else
format.html { render :new }
format.json { render json: @sell.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /sells/1
# PATCH/PUT /sells/1.json
def update
respond_to do |format|
if @sell.update(sell_params)
format.html { redirect_to @sell, notice: 'La venta ha sido modificada con exito.' }
format.json { render :show, status: :ok, location: @sell }
else
format.html { render :edit }
format.json { render json: @sell.errors, status: :unprocessable_entity }
end
end
end
# DELETE /sells/1
# DELETE /sells/1.json
def destroy
@sell.destroy
respond_to do |format|
format.html { redirect_to sells_url, notice: 'La venta ha sido eliminada con exito.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_sell
@sell = Sell.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def sell_params
params.require(:sell).permit(:usuario_id, :fecha_compra, :peso_final, :monto, :estado, :cantidad)
end
end
我使用脚手架和宝石设计进行身份验证。
我不知道我失踪了什么,因为我在购买时几乎完全相同并且它正在工作但是卖不起作用:(
我的 Routes.db
Rails.application.routes.draw do
devise_for :usuarios
devise_for :users
resources :usuarios do
resources :buys
resources :sells
end
get 'welcome/index'
post 'welcome/index'
post 'users/index'
resources :buys
resources :users
resources :sells
end
这是我在rails上的第一个应用程序,所以我不知道我现在缺少什么。我使用devise,Rails 4.2.1和postgre作为数据库
答案 0 :(得分:0)
如果您的关联是has_many
,Rails将使用复数形式的模型作为关联名称。而不是
current_usario.sell.new
尝试:
current_usario.sells.build
如果您每个用户只需要一个Sell
,请改为使用has_one
关联。
P.S。您可以考虑使用&#34; sales&#34;而不是&#34;销售&#34;和&#34;购买&#34;而不是&#34;购买&#34;。