Ich bin neu in Rails und versuche, eine Anwendung zu erstellen, die eine Benutzeranforderung annimmt. Dies ist jedoch der Fall, wenn ich versuche, eine neue Anfrage zu erstellen.Rails nomethod Fehler
Anfrage Controller:
class RequestsController < ApplicationController
before_action :set_request, only: [:show, :edit, :update, :destroy]
# GET /requests
# GET /requests.json
def index
@requests = Request.all
end
# GET /requests/1
# GET /requests/1.json
def show
end
# GET /requests/new
def new
@request = Request.new
end
# GET /requests/1/edit
def edit
end
# POST /requests
# POST /requests.json
def create
@request = Request.new(request_params)
respond_to do |format|
if @request.save # <-------------- The problem is here
format.html { redirect_to @request, notice: 'Request was successfully created.' }
format.json { render :show, status: :created, location: @request }
else
format.html { render :new }
format.json { render json: @request.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /requests/1
# PATCH/PUT /requests/1.json
def update
respond_to do |format|
if @request.update(request_params)
format.html { redirect_to @request, notice: 'Request was successfully updated.' }
format.json { render :show, status: :ok, location: @request }
else
format.html { render :edit }
format.json { render json: @request.errors, status: :unprocessable_entity }
end
end
end
# DELETE /requests/1
# DELETE /requests/1.json
def destroy
@request.destroy
respond_to do |format|
format.html { redirect_to requests_url, notice: 'Request was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_request
@request = Request.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def request_params
params.require(:request).permit(:user_id, :description, :created)
end
end
Der Fehler sagt, dass es keine "Create" ist Controller-Methode in den Anfragen, aber die Methode, die dies sagt, die Methode erstellen ist. Ich denke, dass ein Problem darin besteht, dass meine Ansicht die Beschreibung nicht als Parameter weitergibt und ich bin mir nicht sicher, wie ich das tun soll/warum es nicht schon so ist.
_form.html.erb (von edit.html.erb Rendered):
%= form_for(@request) do |f| %>
<% if @request.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@request.errors.count, "error") %> prohibited this request from being saved:</h2>
<ul>
<% @request.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<center>
<div class="field">
<%= f.label 'Describe your favor' %><br>
<%= f.text_area :description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
</center>
<% end %>
Wenn jemand mir zeigen konnte, wie die Beschreibung Objekt als Parameter an meine erstellen Methode zu übergeben und die Methode erhalten nicht zusammenbrechen. Hier
ist das Fehlerprotokoll:
NoMethodError (undefined method `Request' for #<Request:0x007f9fbd8992e8>):
app/controllers/requests_controller.rb:32:in `block in create'
app/controllers/requests_controller.rb:31:in `create'
Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/_source.erb (6.9ms)
Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.8ms)
Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.9ms)
Rendered /usr/local/rvm/gems/ruby-2.2.2/gems/actionpack-4.2.5/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (29.4ms)
Der Fehler besagt nicht, dass es keine 'create' Methode gibt. Es besagt, dass es keine Methode namens "Request" gibt. Was ist der Wert von 'request_params'? –
Es sollte die '' Beschreibung' 'sein, die der Benutzer einreicht. Es wird als '@ request = Request.new (request_params)' – CS2016
verwendet. Wenn die Dinge immer so waren, wie sie sein sollten, hätten wir nie Fehler. Was ist der * tatsächliche * Wert? –