加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在应用程序布局中部分呈现问题(Rails)

发布时间:2020-12-16 21:39:04 所属栏目:百科 来源:网络整理
导读:这是application.html.erb文件中的调用: %= render :partial = 'tasks/_new' % 这是部分呈现(_new.html.erb): % form_for @task do |f| -% %= f.text_field :body % %= submit_tag "Submit" %% end -% 这是’tasks’控制器中的方法: def new @task = Task
这是application.html.erb文件中的调用:
<%= render :partial => 'tasks/_new' %>

这是部分呈现(_new.html.erb):

<% form_for @task do |f| -%>
  <%= f.text_field :body %>
  <%= submit_tag "Submit" %>
<% end -%>

这是’tasks’控制器中的方法:

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建议的那样,我也在代码中没有使用_但是它返回了与上面相同的错误,被称为id为nil ….

这是怎么回事?

解决方法

您的代码中不需要_.它应该是:
<%= render :partial => 'tasks/new' %>

第一个错误是因为您不需要将_放在:partial参数中. Rails负责这一点.这就是你得到双__的原因,因为Rails会为你准备一个.

第二个错误是你真正的问题.该错误表明@task为零.这是正确的,因为partial只知道容器视图知道什么,并且您在该特定时刻的视图没有从适当的控制器调用该操作.正如您(Baby Diego)已经发现并在下面的一条评论中指出的那样,您需要在部分中创建一个任务实例.我不知道是否有更优雅的解决方案,但也许有人可以在将来提出更好的建议.

感谢MattMcKnight通知我们部分本身只知道容器视图知道什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读