idについての質問
Q&A
解決したいこと
Ruby on Railsでwebアプリをつくっています。
各記事の詳細を表示する際にエラーが発生しました。
解決方法を教えて下さい!
発生している問題・エラー
該当するソースコード
app/controllers/companies_controller.rb
class CompaniesController < ApplicationController
before_action :authenticate_user!
before_action :move, only: [:show, :index, :edit, :update, :destroy]
before_action :prohibit, only: [:edit, :update, :destroy]
def index
@companies = Company.all.order("created_at DESC")
end
def new
@company = Company.new
end
def create
@company = Company.new(company_params)
if @company.save
redirect_to user_companies_path(current_user)
else
render :new
end
end
def show
end
def edit
end
def update
if @company.update(company_params)
redirect_to user_companies_path(current_user)
else
render :edit
end
end
def destroy
if @company.destroy
redirect_to user_path(current_user)
else
render :show
end
end
private
def company_params
params.permit(:company_name, :explanation, :date).merge(user_id: current_user.id)
end
def move
@company = Company.find(params[:user_id])
end
def prohibit
redirect_to interns_index_path unless current_user.id == @company.user_id
end
end
app/views/companies/index.html.erb
<% @companies.each do |company| %>
<ul>
<li class='list'>
<div class='intern-info'>
<h3 class='company-name'>
<%= company.company_name %>
</h3>
<ul class="more_list">
<% if user_signed_in? %>
<% if current_user== company.user %>
<li>
<%= link_to '詳細 👀', user_company_path(company.id), method: :get %>
</li>
<li>
<%= link_to '編集 📝', edit_user_company_path(company.id), method: :get %>
</li>
<li>
<%= link_to '削除 ❌', user_company_path(company.id), method: :delete %>
</li>
<% end %>
<% end %>
</ul>
<div class='company-date'>
<span><%= company.date %></span>
</div>
</div>
</li>
</ul>
<% end %>
config/routes.rb
resources :users, only: [:show] do
resources :companies
end
解決させたいこと
解決させたいことは、user_idの値を1に、company_idの値を25にして、views/companies/index.html.erbにおいてcompany.idのidがcompany_idとして受け取られるようにすることです。
自分で考えたこと
エラー画像によると、parametersではuser_idが1である(画像の一番下に書いてある)のに対し、エラー文では25として受け取られています。25というのは各記事(company)のidの値を指し示しています。このことから、user_idが1のはずが、各記事のid(company_id)になっていることがエラーの原因だと考えました。この理由として、config/routes.rbにおいて各記事(company)とuserが入れ子構造になっているためだと考えました。
さまざまな教科書やインターネットを参考にして、company_idの取得を試みましたが、うまくいきませんでした。解決方法があればご教授いただきたいです。🙇♀️