2016-09-30 40 views
0

我有一個相當簡單的模型,名爲Inquiry,並使用show頁面顯示實例的記錄,但無論我嘗試顯示哪個實例,它都顯示相同記錄的信息。Rails顯示視圖顯示錯誤的記錄信息

這裏是我的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 %> 

無論我點擊哪條記錄,似乎總是向我顯示數據庫中的第一條記錄。任何人都可以看到我錯了哪裏?

回答

0

在您的控制器中,您正在調用find_by,這是不正確的。你會想通過ID找到。該行看起來像這樣:

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

如果你不想要例外,你可以改爲find_by_id。

+0

非常好!我知道這是我忽略的一些愚蠢。我是否應該改變索引方法呢? – Liz

+0

你不應該得到你的索引方法的參數[:id],所以你應該刪除該行。 –

+0

太棒了。謝謝! – Liz

0

您可以使用.find_by_id或只需.find

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