我有一个名为Inquiry
的相当简单的模型,并使用show页面显示实例的记录,但无论我尝试显示哪个实例,它都会显示同一记录的信息。
这是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 -->
以下是我访问它的方式,但是网址确认我实际上正在查看不同的记录,所以我认为这不是问题所在:
<% @inquiries.each do |m| %>
...
<td><%= link_to "Details", inquiry_path(m) %></td>
...
<% end %>
无论我点击哪条记录,似乎总是向我显示数据库中的第一条记录。谁能看到我哪里出错?
答案 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])