Rails显示视图显示错误的记录信息

时间:2016-09-30 17:00:48

标签: ruby-on-rails

我有一个名为Inquiry的相当简单的模型,并使用show页面显示实例的记录,但无论我尝试显示哪个实例,它都会显示同一记录的信息。

这是showindex的控制器:

  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 -->

以下是我访问它的方式,但是网址确认我实际上正在查看不同的记录,所以我认为这不是问题所在:

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

无论我点击哪条记录,似乎总是向我显示数据库中的第一条记录。谁能看到我哪里出错?

2 个答案:

答案 0 :(得分:0)

在您的控制器中,您调用的find_by不正确。你想要通过id找到。这条线看起来像这样:

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

如果您不想要例外,可以改为find_by_id。

答案 1 :(得分:0)

您可以使用.find_by_id或仅使用.find

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