30

For example: I'm have two models: Task and List. Task belongs_to List. I'm render lists/_form.html.erb partial within lists/show.html.erb view. Now I need to render tasks/_fields.html.erb partial within lists/_form.html.erb partial:

<%= render 'tasks/fields' %>

But I get an error ActionView::MissingTemplate

If I try to render tasks/_fields.html.erb within lists/_form.html.erb, everything works.

I see two bad ways to solve this problem:

Is there a good way?

aetaur
  • 336
  • 1
  • 3
  • 8

4 Answers4

46

Try this:

<%= render :partial => 'tasks/fields' %>
Arun Kumar Arjunan
  • 6,827
  • 32
  • 35
6

For Rails 5 & above:

You better use the render without partial like this:

<% render 'tasks/fields' %>

Because the partial can cause this kind of issues & is not needed any more

Ahmed Elkoussy
  • 8,162
  • 10
  • 60
  • 85
6

If you are sharing things like this, why not put them into a folder like app/views/shared/ or directly into app/views/layouts?

pdu
  • 10,295
  • 4
  • 58
  • 95
5

Based on @ArunKumarArjun but with the new Rails notation:

<%= render partial: 'tasks/fields' %>
Matias Jurfest
  • 1,378
  • 16
  • 25