ich auf zwei einfachen Modell arbeitenRails Association, nicht definierte Methode
class Permit < ApplicationRecord
belongs_to :user, optional: true
validates :user_id, presence: true
end
class User < ApplicationRecord
has_many :permits
has_secure_password
end
Im Schienenkonsole, ich tue das folgende
user = User.find(10)
, die die ein Benutzerobjekt Benutzer zuweisen. Aber wenn ich eine Genehmigung für den Benutzer erstellen möchten gibt es diesen Fehler
NoMethodError in PermitsController#create
undefined method `Permit' for #<User:0xaaa3528>
Wie dieses Problem zu lösen? Vielen Dank!
Das ist mein permit_controller, die das Problem, das ich Aktion
class PermitsController < ApplicationController
before_action :set_permit, only: [:show, :destroy]
def index
@permits = Permit.all
end
def new
@permits = Permit.new
end
def create
@permits = user.permits.create(permit_params)
if @permits.save
redirect_to @permits
else
redirect_to contact_path
end
end
def destroy
Permit.destroy_all(user_id: 1)
respond_to do |format|
format.html { redirect_to users_url, notice: 'Permit was successfully canceled.' }
format.json { head :no_content }
end
end
def show
@permits = Permit.find(params[:id])
end
def update
respond_to do |format|
if @permits.update(user_params)
format.html { redirect_to @user, notice: 'Permit was successfully updated.' }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_permit
@permits = Permit.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def permit_params
params.require(:permit).permit(:vehicle_type, :name, :studentid, :department, :carplate, :duration, :permitstart, :permitend)
end
end
Permit/neu/html.erb
<% provide(:title, 'New Permit') %>
<h1>Permit Application</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@permits) do |f| %>
<%= f.label :"Vehicle" %>
<%= f.text_field :vehicle_type, class: 'form-control' %>
<%= f
.label CREATE glauben: "License Plate" %> <% = f.text_field: carplate, Klasse: 'form-control'%>
<%= f.label :"Student ID" %>
<%= f.text_field :studentid, class: 'form-control' %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :"Department of applicant" %>
<%= f.text_field :department, class: 'form-control' %>
<%= f.label :permit_start %>
<%= f.date_select :permitstart, class: 'form-control' %>
<%= f.label :permit_end %>
<%= f.date_select :permitend, class: 'form-control' %>
<%= f.submit "Submit", class: "btn btn-primary" %>
<% end %>
können Sie den Code, den Sie verwendet haben, um eine Genehmigung zu erstellen. das wäre sehr relevant Info – Ren
Ich habe meine Frage aktualisiert :) –