-2

我有一个控制器,在索引视图中我试图从另一个控制器渲染一个部分。这是另一个控制器:

class ModelController < ApplicationController
def view 
    @model = Model.where('equipment_id' => params[:equipment_id])
    render :partial => 'view_model'

end
end

在索引视图中我正在尝试这个:

<div id ="mdl-inner_box" class="inner_box">
<%= render "model/view", :@model => Model.first %>
</div>

我的部分观点是这样的:

<% @model.each do |m| %>
<div> <%= m.name %> </div>
<% end %>

我收到此错误:

ActionView::MissingTemplate 在 /equipment

缺少带有 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :b 的部分模型/视图

这样做的正确方法是什么?谢谢

4

1 回答 1

1

有太多错误无法真正解决这个问题!

首先,如果您要显示索引操作的代码,为什么它是视图操作?

我有一个控制器,在索引视图中......

class ModelController < ApplicationController
  def view

  # should be

  def index

在您的索引视图中,大概app/views/models/index.html.erb您渲染了一个部分,它指向app/views/model/_view.html.erb. 那应该是models

<%= render "model/view", :@model => Model.first %>

<!-- should be -->

<%= render "models/view", :model => @model %>

并设置@model在您的控制器中。您可以放入Model.first视图本身,但我认为这会稍微破坏 MVC 模式。

最后,在部分中,您访问了类变量@model,违背了将其作为本地传递的目的。您还可以调用.each它,这是一种循环遍历集合的方法,而不是单个记录。例如,您会做@models.each,但永远不会@model.each

<% @model.each do |m| %>
  <div><%= m.name %></div>
<% end %>

<!-- should be something like -->

<%= model.name %>

长话短说,在我看来你迷路了,所以在你继续之前,我会先从一本关于 Ruby on Rails 的好书开始。这是一个免费的:http ://ruby.railstutorial.org/ruby-on-rails-tutorial-book?version=4.0

于 2013-06-16T05:25:56.993 回答