【问题标题】:ruby on rails render deosn't find the fileruby on rails render 找不到文件
【发布时间】:2012-07-20 19:30:42
【问题描述】:

我是 ruby​​ on rails 的新手。

在视图/事件中,我有“_form.html.erb”,该代码在“new.html.erb”中呈现:

<%= render "form" %>

现在我想在同一文件夹(视图/事件)中的“index.html.erb”中呈现“_form.html.erb”。 但我收到错误“缺少模板”。

我想我必须在控制器中添加一些东西,请帮助我在其他视图页面中呈现表单...

【问题讨论】:

  • 这绝对应该工作。我们是否有关于错误消息的更多详细信息?在索引页面中是否也写完全一样,&lt;%= render "form" %&gt;
  • 它是否告诉它试图找到部分的路径?
  • 这是我的错误 ActionView::Template::Error (undefined method `errors' for nil:NilClass):

标签: ruby-on-rails forms partial-views render


【解决方案1】:

您“通常”不会在索引操作中呈现表单。大多数表单部分都在语义上设置为期望@my_resource,但是如果您以rails 方式进行所有操作,则在索引操作期间将不会有实例变量。有很多方法可以做到这一点,但这可能是最快的。

您的索引操作中可能有一些收藏(假设您正在使用书籍):

#views/books/index.html.erb
<% @books.each do |book| %>
   ...
   <%= render "form" %>
   ...
<% end %>

您可以在呈现表单之前在某处设置一个实例变量:

#views/books/index.html.erb
<% @books.each do |book| %>
   <% @book = book %>
   ...
   <%= render "form" %>
   ...
<% end %>

另一种方法是通过将一些本地人传递给部分人。您必须更改 _form 中的所有引用以改用局部变量。然后你可以像这样调用渲染:

<%= render :partial => "form", :locals => {:book => book } %>

【讨论】:

    【解决方案2】:

    你可以试试

    <%= render "events/form" %>
    

    我之前遇到过这个问题,现在解决了

    【讨论】:

    • 对不起,你是对的。请检查“/events/form”而不是“events/form”并告诉我是否有效。
    • 再次感谢 enrique... 但仍然是 ActionView::Template::Error(nil:NilClass 的未定义方法“错误”):
    • 您的代码中是否有任何调用错误方法或属性的内容?
    • 我在控制器中为索引添加了新实例的定义,然后它起作用了...谢谢...
    • 好的,太好了。它与部分中的“表单”或“事件/表单”一起使用??
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 2016-07-03
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多