簡単なRuby on Railsアプリケーションを作成する方法を学んでいます。ユーザーがデータを入力できるフィールドを作成しています。送信(または作成)すると、このデータが保存され、ユーザーはホームページに戻ります。そこで私はモデルを作成するためにlocalhost:3000/listings/newを持っていて、次にlocalhost:3000/listing/1にアクセスして新しく作成したモデルを表示しようとしました。なぜこのようなことがあるのか分かりませんし、何も結果を出さずに数時間探しました。Rails Webappでレコードが見つかりませんでした。エラー
listings_controller.rb
class ListingsController < ApplicationController
def new
@listing = Listing.new #calls on new method in listing model
end
def create
@listing = Listing.new(listing_params)
@listing.save
redirect_to root_path
end
def show
@listing = Listing.find(params[:id])
end
private
def listing_params
params.require(:listing).permit(:title, :description, :city, :state, :zipcode)
end
end
(必要な場合)new.html.erbとshow.html.erb
<div class="topbar">
</div>
<div class="container">
<div id="contact-area">
<%= form_for @listing do |f| %>
<!-- taken from schema.rb -->
<%= f.label :title %>
<%= f.text_field :title %> <!-- use text field when body is just 1 line -->
<%= f.label :description %>
<%= f.text_area :description %> <!-- more for paragraphs -->
<%= f.label :city %>
<%= f.text_field :city %>
<%= f.label :state %>
<%= f.text_field :state %>
<%= f.label :zipcode %>
<%= f.text_field :zipcode, class: "zip-width", maxlength: "5" %>
<%= f.submit class: "create-button"%>
<% end %>
</div>
</div>
AND
<div class="topbar">
<div class="container">
<div class="vertical-center">
<%= link_to 'home', root_path %> > jobs > accounting
</div>
</div>
</div>
<div class="container">
<div>
<button type="button">reply</button>
posted <%= time_ago_in_words(@listing.created_at) %>
<h1 class="listing-header"><%= @listing.title %></h1>
<div class="box">
<p>test</p>
</div>
<p><%= @listing.description%></p>
</div>
<footer>
<p>post id: <%= @listing.id%></p>
<p>posted <%= time_ago_in_words(@listing.created_at) %></p>
</footer>
</div>
routes.rbを
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
#NOTE USE rake routes TO SEE ALL ROUTES
#Creates the CRUD actions for categories
resources :categories do
resources :subcategories #Creates CRUD actions for subcategories
end
resources :listings
root 'categories#index' #first page that we land on -- homepage
#matching paths to pages controller
match '/help', to: 'pages#help', via: :get
match '/scams', to: 'pages#scams', via: :get
match '/safety', to: 'pages#safety', via: :get
match '/terms', to: 'pages#terms', via: :get
match '/privacy', to: 'pages#privacy', via: :get
match '/about', to: 'pages#about', via: :get
match '/contact', to: 'pages#contact', via: :get
end
あなたの 'root_path'は何ですか? – Gabbar
レコードが 'id = 1'または' Listing.find(1) 'で存在するかどうかを確認します。 – Gabbar
これに変更し、URLGenerationError - 'No route matches {:action =>" show "、:controller =>" listings "、:id => nil}、必須キーがない:[:id]。提出をクリックした後、私のIDは無名になりますか?私が追加する必要がある他のコードはありますか? –