ruby on rails初心者で、投稿機能の確認画面を作成しようとしております。
「index.html」の「投稿内容を確認する」ボタンをクリックして、
確認画面として用意している、「confirm」のView画面に遷移させるという機能を作りたいです。
ルーティングで、「hmhrpractices_confirm POST /hmhrpractices/confirm(.:format) hmhrpractices#confirm」としているにも関わらず、アドレスバーの末尾に「/hmhrpractices/confirm」を入れて検索すると、ブラウザ上で「Hmhrpractices#show Find me in app/views/hmhrpractices/show.html.erb」と表示されてしまいます。
なぜ、指定しているものと異なるページが呼び出されてしまうのでしょうか。
(数日間、確認画面を作ることに難儀しており、コードがごちゃごちゃしてしまっているかと思います。。申し訳ございませんが、ご確認いただけますと幸いです。)
◆ルーティング
Prefix Verb URI Pattern Controller#Action
hmhrpractices_back GET /hmhrpractices/back(.:format) hmhrpractices#back
hmhrpractices_show GET /hmhrpractices/show(.:format) hmhrpractices#show
hmhrpractices_new GET /hmhrpractices/new(.:format) hmhrpractices#new
hmhrpractices_edit GET /hmhrpractices/edit(.:format) hmhrpractices#edit
root GET / practices#index
practices GET /practices(.:format) practices#index
POST /practices(.:format) practices#create
new_practice GET /practices/new(.:format) practices#new
edit_practice GET /practices/:id/edit(.:format) practices#edit
practice GET /practices/:id(.:format) practices#show
PATCH /practices/:id(.:format) practices#update
PUT /practices/:id(.:format) practices#update
DELETE /practices/:id(.:format) practices#destroy
hmhrpractices GET /hmhrpractices(.:format) hmhrpractices#index
POST /hmhrpractices(.:format) hmhrpractices#create
new_hmhrpractice GET /hmhrpractices/new(.:format) hmhrpractices#new
edit_hmhrpractice GET /hmhrpractices/:id/edit(.:format) hmhrpractices#edit
hmhrpractice GET /hmhrpractices/:id(.:format) hmhrpractices#show
PATCH /hmhrpractices/:id(.:format) hmhrpractices#update
PUT /hmhrpractices/:id(.:format) hmhrpractices#update
DELETE /hmhrpractices/:id(.:format) hmhrpractices#destroy
hmhrpractices_confirm POST /hmhrpractices/confirm(.:format) hmhrpractices#confirm
POST /hmhrpractices/back(.:format) hmhrpractices#back
rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show
rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format)
◆controller
class HmhrpracticesController < ApplicationController
PER = 4
def index
@hmhrpractices = Hmhrpractice.page(params[:page]).per(PER).order(id: "DESC")
@hmhrpractice = Hmhrpractice.new
end
def show
end
def edit
end
def create
@hmhrpractice = Hmhrpractice.new(hmhrpractice_params)
if @hmhrpractice.save
redirect_to hmhrpractices_confirm_path
else
render :new
end
end
def confirm
@hmhrpractices = Hmhrpractice.new(hmhrpractice_params)
if @hmhrpractices.save
redirect_to root_path,notice: 'Success!'
else
flash[:alert] = "SAVE ERROR!"
end
end
def back
@hmhrpractices = Hmhrpractice.new(hmhrpractice_params)
if params[:back]
render("hmhrpractices/confirm")
else
MessageMailer.received_email(@hmhrpractices).deliver_now
render :action => 'back'
end
end
private
def hmhrpractice_params
params.permit(:name, :title, :content)
end
end
◆index.html
</body> </html> _______________________________________________ ◆controller<div class="header-wrapper"> <div class="header-left"> <h1>検索サイト</h1> </div> <div class="header-right"> <form class="search" id="makeImg"> <div class="search-wrapper"> <input type="text" id="inText" class="searchText" placeholder="キーワード検索"> <input type= submit value= 検索 class="searchBtn"> </div> </form> <div class="login"> <a href="#" class="login-btn">ログイン</a> </div> </div> </div> </div> </header> <main> <div class="main-wrapper"> <div class="main-content"> <div class="thread-title"> <h1>HM/HR</h1> </div> <div class="new-posts"> <h1>新着投稿<p class="post-button" id="open"><span>投稿をする</span></p></h1> <% @hmhrpractices.each do |hmhrpractice| %> <p><%= hmhrpractice.name %></p> <h2><%= hmhrpractice.title %></h2> <p><%= hmhrpractice.content %></p> <% end %> <%= paginate @hmhrpractices %> </div> </div> <div class="popular"> <h1>人気投稿</h1> </div> </div> </div> </main> <div id="mask" class="hidden"></div> <div id="modal" class="hidden"> <h2>投稿する</h2> <%= form_with model: @hmhrpractice,local: true do |f| %> <div> <label>名前</label> <%= f.text_field :name, class: "form-control" %> </div> <div> <label>タイトル</label> <%= f.text_field :title, class: "form-control" %> </div> <div> <label>内容</label> <%= f.text_area :content, class: "form-control" %> </div> <div> <%= f.submit "投稿内容を確認する", class: "btn btn-primary" %> </div> <% end %> <div id="close"> 閉じる </div> </div> <%= javascript_include_tag 'application' %>
class HmhrpracticesController < ApplicationController
PER = 4
def index
@hmhrpractices = Hmhrpractice.page(params[:page]).per(PER).order(id: "DESC")
@hmhrpractice = Hmhrpractice.new
end
def show
end
def edit
end
def create
@hmhrpractice = Hmhrpractice.new(hmhrpractice_params)
if @hmhrpractice.save
redirect_to hmhrpractices_confirm_path
else
render :new
end
end
def confirm
@hmhrpractices = Hmhrpractice.new(hmhrpractice_params)
if @hmhrpractices.save
redirect_to root_path,notice: 'Success!'
else
flash[:alert] = "SAVE ERROR!"
end
end
def back
@hmhrpractices = Hmhrpractice.new(hmhrpractice_params)
if params[:back]
render("hmhrpractices/confirm")
else
MessageMailer.received_email(@hmhrpractices).deliver_now
render :action => 'back'
end
end
private
def hmhrpractice_params
params.permit(:name, :title, :content)
end
end
◆confirm.html
<h1>予約フォーム</h1> <ol class="nav"> <li>1.入力</li> <li class="current">2.確認</li> <li>3.完了</li> </ol> <dl> <dt>名前</dt> <dd><%= @hmhrpractices.name %></dd> <dt>タイトル</dt> <dd><%= @hmhrpractices.title %></dd> <dt>投稿内容</dt> <dd><%= @hmhrpractices.content %></dd> </dl><%= form_with(model: [@practices, Hmhrpractice.new]) , method: :post, url: reserve_back_path do |form| %>
<%= form.hidden_field :name %>
<%= form.hidden_field :title %>
<%= form.hidden_field :content %>
<%= form.submit '入力画面に戻る' %>
<% end %>
<%= form_for @hmhrpractices, method: :post, url: reserve_complete_path do |form| %>
<%= form.hidden_field :name %>
<%= form.hidden_field :title %>
<%= form.hidden_field :content %>
<%= form.submit '送信する' %>
<% end %>
あなたの回答
tips
プレビュー