2012-05-14 27 views
1

我期待以一個模型爲例(在這種情況下,Book),並通過ID呈現該模型的特定實例。呈現特定的模型ID?

該模型只是一個基本的腳手架生成模型 - 通常show方法;

def show 
    @book = Book.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @book } 
    end 
    end 

我期待嵌入此視圖裏面的實例:

<div class="tab-pane active" id="tab1"> 
    <%= render :template "books/show", :book => 1 %> 
</div> 

有什麼我做錯了,我可以告訴。但我不知道該從哪裏出發!任何幫助真的很感激。我知道我需要以某種方式傳遞書籍ID,但我無法弄清楚如何做到這一點。謝謝!

+0

您需要實際查找書籍,在模板中不適合 - 使用':template'只是呈現模板,而不執行操作。你的真正目標是什麼?如果你已經擁有這本書,你是否實際上試圖爲這本書渲染一個部分? –

+0

我確實有這本書,是的。其中幾個。我基本上只想渲染現有div中的show view。 – Kristian

+0

我想說的是,如果你已經在渲染書籍控制器的「秀」,那麼'@ book'已經可用了。你想在div中渲染一個部分嗎?這是書中的視圖(顯示模板)嗎? –

回答

3

<%= render :template "books/show", :book => 1 %>只渲染部分,它不是加載頁面。
您需要做的是從iframe調用路由"books/show/#{book_id}"

+0

這個工程到目前爲止。我不是iFrames的忠實擁躉,但我可以很容易地格式化它。謝謝! – Kristian

1

您在控制器中創建的變量@book會自動顯示在模板中。所以,如果你的模板show.html.erb被放置在合適的位置,然後

<%= @book.title %> 

應該呈現的文本(我假設這本書在這裏有一個屬性名稱)。

我不確定您所呈現的html位於何處。在show.html.erb中沒有意義,因爲您實際上是從那裏引用該文件的。如果你想呈現一本書的鏈接,那麼你應該做

<%= link_to 'Link text', book_path(1) %> 
2

也許吧?

<div class="tab-pane active" id="tab1"> 
    <%= render 'books/show', book: @book %> 
</div>