Рельсы показать вид, показывающий информацию неправильной записи

У меня есть довольно простая модель под названием Inquiryи я использую страницу показать, чтобы показать запись экземпляра, но независимо от того, какой экземпляр я пытаюсь показать, он отображает информацию для той же записи.

Вот мой контроллер для showи index:

  def index
    @inquiries = Inquiry.all
    @inquiry = Inquiry.find_by(params[:id])
  end

  def show
    @inquiry = Inquiry.find_by(params[:id])
  end

И вот мой inquiry#showвзгляд:

<div class="container">
  <h1 class="text-center"><%= @inquiry.project_name %></h1>

  <div class="row">
    <hr class="col-xs-6 col-xs-push-3">
  </div> <!-- row -->

  <h2><strong>Client: </strong><%= @inquiry.name %></h2>
  <h3><strong>Email: </strong><%= @inquiry.email %></h3>
  <h3><strong>Project Components: </strong></h3>
    <ul>
      <% if @inquiry.site_design %><li>Site Design</li><% end %>
      <% if @inquiry.development %><li>Development</li><% end %>
      <% if @inquiry.copywriting %><li>Copywriting/Content</li><% end %>
      <% if @inquiry.social_media %><li>Social Media</li><% end %>
      <% if @inquiry.seo %><li>SEO</li><% end %>
      <% if @inquiry.branding %><li>Branding</li><% end %>
      <% if @inquiry.print_materials %><li>Print Materials</li><% end %>
      <% if @inquiry.graphic_design %><li>Graphic Design</li><% end %>
      <% if @inquiry.logo_design %><li>Logo Design</li><% end %>
    </ul>
  <h3><strong>Project Details: </strong></h3>
  <p><%= @inquiry.other %></p>

  <div class="row">
    <hr class="col-xs-6 col-xs-push-3">
  </div> <!-- row -->

  <h3 class="text-center"><%= link_to "Back to Index", inquiries_path %></h3>
</div> <!-- container -->

И вот как я получаю доступ к нему, но url подтверждает, что я на самом деле просматриваю разные записи, поэтому я не думаю, что это может быть проблемой:

<% @inquiries.each do |m| %>
    ...
    <td><%= link_to "Details", inquiry_path(m) %></td>
    ...
<% end %>

Независимо от того, на какую запись я нажимаю, она всегда показывает мне первую запись в моей базе данных. Кто-нибудь видит, где я ошибся?

2 ответа

  1. В контроллере вы вызываетеfind_by, который является неправильным. Вы хотели бы найти по id. Линия будет выглядеть так:

     def show
       @inquiry = Inquiry.find(params[:id])
     end
    

    Если вы не хотите исключения, вы можете найти вместо него find_by_id.

  2. Вы можете использовать .find_by_idили просто .find.

    @inquiry = Inquiry.find_by_id(params[:id])
    #or
    @inquiry = Inquiry.find(params[:id])