渲染特定型号ID?

时间:2012-05-14 15:45:36

标签: ruby-on-rails

我希望以模型为例(在本例中为 Book ),并按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,但我无法弄清楚如何做到这一点。谢谢!

3 个答案:

答案 0 :(得分:3)

<%= render :template "books/show", :book => 1 %>仅渲染部分内容,而不是加载页面 您需要做的是从iframe调用路线"books/show/#{book_id}"

答案 1 :(得分:2)

也许?

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

答案 2 :(得分:1)

您在控制器中创建的变量@book会自动显示在模板中。因此,如果您的模板show.html.erb位于正确的位置,那么

<%= @book.title %>

应该呈现文本(我假设本书在这里有一个属性标题)。

我不确定您提供的HTML位于何处。它在show.html.erb中没有意义,因为你实际上从那里引用了那个文件。如果您想要呈现书籍的链接,那么您应该

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