gpt4 book ai didi

ruby-on-rails - 在应用程序布局中部分渲染问题(Rails)

转载 作者:行者123 更新时间:2023-12-04 13:29:53 24 4
gpt4 key购买 nike

这是application.html.erb文件中的调用:

<%= render :partial => 'tasks/_new' %>

这是正在渲染的部分内容( _new.html.erb):
<% form_for @task do |f| -%>
<%= f.text_field :body %>
<%= submit_tag "Submit" %>
<% end -%>

这是“任务” Controller 中的方法:
def new
@task = Task.new

respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @task }
end
end

这是我不断收到的错误消息:
Missing template tasks/__new.erb in view path app/views

它说错误在这一行:
<%= link_to "tasks", tasks_path %> <%= render :partial => 'tasks/_new' %>

该文件在正确的目录中。奇怪的是,有一个
错误的文件名中的多余 _。当我让步并重命名
部分到 __new.erb,这是我得到的错误:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

它说错误在这一行:
<% form_for @task do |f| -%>

正如Petros建议的那样,我也尝试了在代码中没有 _,但是它返回了与上述相同的错误 Called id for nil…

这是怎么回事?

最佳答案

您不需要在代码中使用_。它应该是:

<%= render :partial => 'tasks/new' %>

第一个错误是因为您不需要将_放在:partial参数中。 Rails会解决这个问题。这就是为什么您获得双倍__的原因,因为Rails会为您放一个。

第二个错误是您的实际问题。该错误表明@task为nil。这是正确的,因为partial只知道容器 View 所知道的内容,并且在特定时刻您的 View 尚未从适当的 Controller 调用操作。正如您(圣地亚哥宝贝)已经发现并在下面的评论之一中指出的那样,您需要在部分中创建Task的实例。我不知道是否有更好的解决方案,但也许将来有人可以提出更好的建议。

感谢MattMcKnight告知我们分部本身仅知道容器 View 所知道的内容。

关于ruby-on-rails - 在应用程序布局中部分渲染问题(Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com