Partial js file with locals

39 views
Skip to first unread message

Hans

unread,
Jul 28, 2013, 5:40:09 AM7/28/13
to rubyonra...@googlegroups.com
I have a lot of js files like new.js, index.js, create.js etc that handles my Ajax calls and other jquery code
As the have many common code snippets I have tried to use partial js files
For example I have a new.js file that calls a partial _new.js

new.js
<%= render :partial=>'new',  :formats=>[:js],:handlers=>[:erb] %>

_new.js
<% if params[:group_id]%>
    $("#group_participants_content").html("<%= escape_javascript(render(:partial=>'form'))%>");
    $(".remote_selected").removeClass("selected remote_selected simple-navigation-active-leaf");
    $("#group_mail").addClass(" remote_selected simple-navigation-active-leaf");
<%else%>
$("#users_content").html("<%= escape_javascript(render(:partial=>'form'))%>");
$(".remote_selected").removeClass("selected remote_selected simple-navigation-active-leaf")
$("#mail").addClass("remote_selected simple-navigation-active-leaf");
<%end%>
// Change our States
History.replaceState({action:'<%= "#{controller.action_name}/#{controller_name}" %>'}, '<%= "#{controller.action_name.titleize} #{controller_name}" %>', '?action=<%= "#{controller.action_name}/#{controller_name}" %>');
var url=History.getState().url;   
$("#help").attr('href',"/helps/0?url="+url)

That works but to be useful I would like to add locals as
<%= render :partial=>'new',  :formats=>[:js],:handlers=>[:erb], locals=>{id=>"#group_participants_content"}%>
and change _new.js to
  $('"'+id+'"').html("<%= escape_javascript(render(:partial=>'form'))%>");
However that does not work- The js file seems then not to be loaded at all

Anyone that has any suggestion of what is wrong ?

Appreciate any help ?



Colin Law

unread,
Jul 28, 2013, 5:50:55 AM7/28/13
to rubyonra...@googlegroups.com
On 28 July 2013 10:40, Hans <Hans.M...@klockholm.se> wrote:
> ...
>
> That works but to be useful I would like to add locals as
> <%= render :partial=>'new', :formats=>[:js],:handlers=>[:erb],
> locals=>{id=>"#group_participants_content"}%>

I don't know whether there are any other problems but it should be
:locals and :id I think

Colin




> and change _new.js to
> $('"'+id+'"').html("<%= escape_javascript(render(:partial=>'form'))%>");
> However that does not work- The js file seems then not to be loaded at all
>
> Anyone that has any suggestion of what is wrong ?
>
> Appreciate any help ?
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/a4426ed5-8c18-4d0e-a3f4-0ded55b17889%40googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
Message has been deleted
Message has been deleted
Message has been deleted

Hans

unread,
Jul 28, 2013, 6:28:01 AM7/28/13
to rubyonra...@googlegroups.com, cla...@googlemail.com
Colin
Thanks for your answere, but that was just a typo from me. The code has :locals and :id

Colin Law

unread,
Jul 28, 2013, 6:56:19 AM7/28/13
to rubyonra...@googlegroups.com
On 28 July 2013 11:28, Hans <Hans.M...@klockholm.se> wrote:
> Colin
> Thanks for your answere, but that was just a typo from me. The code has
> :locals and :id

When asking questions it is always a good idea to copy/paste then you
are more likely to get helpful replies. Perhaps there are different
typos in your code that you have accidentally corrected when you
re-typed it here.

Colin

Hans

unread,
Jul 28, 2013, 8:16:51 AM7/28/13
to rubyonra...@googlegroups.com, cla...@googlemail.com
The problem is now solved
The correct use of locals should be
$("<%=id%>").html("<%= escape_javascript(render(:partial=>'form'))%>");
and not
$('"'+id+'"').html("<%= escape_javascript(render(:
partial=>'form'))%>");
Reply all
Reply to author
Forward
0 new messages