This is what I have in my erb.js file....but it doesn't work:
1 //Update with a message
2 $('#follow-update').html("<%= follow_button(@question) %>")
follow_button is a helper:
20 def follow_button(resource)
21
22 type = resource.class.name
23 follow_status = current_user.following?(resource)
24
25 verb = "Follow" if follow_status == false
26 verb = "Unfollow" if follow_status == true
27
28 content_tag(:div, :class => "follow-button") do
29 link_to "#{verb} this #{type} ", follow_path(:followed_type => type,
30 :followed_id => resource.id,
31 :follow_verb => verb),
32 :class => "button",
33 :remote => true
34 end
35 end
36 end
The helper stand-alone works fine, but I want it to update my button. Perhaps there's a way to just update the text without replacing the whole helper?
Create a partial that holds your contains only your helper.
For example: '/wherever/_follow_button.html.erb'
Inside, call your helper:
<%= follow_button(question) %>
Next, render it using JS.
$('#some-id').html("<%= escape_javascript(render('/wherever/follow_button', :question => @question)) %>");
There are ways to make this more efficient but hopefully this helps for now.
You can't call a helper method from a js.erb
file unless you explicitly include it as described in Using a Rails helper method within a javascript asset . For example:
<% environment.context_class.instance_eval { include ApplicationHelper } %>
And you should be careful about escaping your HTML too.
You will need escape_javascript
$('#follow-update').html("<%= raw( escape_javascript( follow_button(@question ))) %>");
If this doesn't work, please see show the returned ajax text and the button html
Sorry, I cannot test right now, but have you paid attention to html safe or javascript escapes?
eg try to enclose your follow_button(@question)
in raw()
or escape_javascript()
?
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.