john seymour
john seymour

Reputation: 213

Render partial through js.erb

Im trying to render a form to add a comment via jquery, but i keep getting this error:

undefined method `render' for #<#<Class:0x007fc8aaa18860>:0x007fc8a0fddfc0>

Here is the js.erb file:

$(document).on('turbolinks:load', function(){
  console.log('test');
  $('.reply-comment-form').on('click', function(e) {
    e.preventDefault();
    body = this.id;
    $('.nest-' + body).append( "<%= escape_javascript(render partial: 'comment_reply_form')%>");
  });
});

Ive tried multiple different iterations of the code but still the same error.

When i try say, this for example:

$('.nest-' + body).append( " This is a test");

It does as it should do.

Ive checked the other questions here and i cant see anything different to what i'm doing so i'm a little stuck.

Here is what im trying to render:

<div class="body">
  <span class="tip tip-left"></span>
  <div class="message font-medium">
    <%= form_for @message do |form| %>
    <%= form.label :Reply_to_comment %> <br />
    <%= form.text_area :content, :rows => 5, :cols => 80, autofocus: true %> <br />
    <%= form.hidden_field :entry_id, value: params[:entry_id] %>
    <%= form.hidden_field :parent_id, :value => params[:parent_id] %>
    <%= form.submit "Submit"%>
    <% end %>
  </div>
  <div class="flerowspb">
    <span class="font-small">
      </span>
    </span>
  </div>
</div>

Thanks

Upvotes: 1

Views: 1288

Answers (3)

john seymour
john seymour

Reputation: 213

Ok so I've come across the answer, I cant call render from the assets folder.

Here is the link

Upvotes: 2

Matias Seguel
Matias Seguel

Reputation: 828

Try using j render:

$('.nest-' + body).append( "<%= j render 'comment_reply_form' %>");

and i think that path for partial view should be more accurate, like 'controller_name/view/partial' , or whatever you have in your code.

Upvotes: 1

fool-dev
fool-dev

Reputation: 7777

Try to the following

$('.nest-' + body).append( "<%= escape_javascript(render("messages/comment_reply_form"))%>");

or

$('.nest-' + body).html("<%= escape_javascript(render("messages/comment_reply_form")) %>");

Upvotes: 1

Related Questions