Hi All!
This turns out to be two separate issues. The <a> tag in dryml does not
work consistently (except to produce an HTML request when called from
within a partial). I replaced it with a new tag <ajax-button>. This is
not quite finished (it does not check for missing but required
attributes), but it works whether it is called from an normal page or a
partial (and always produces a JS request):
<def tag="ajax-button" attrs="label, image, subsite, action, title,
imgclass">
<%= url = object_url(this, :method => :put, :subsite => subsite);
url = url + '/' + action if action;
link_to(url, :remote => true,:method => :put ) do
image_tag(image, class: imgclass, title: title);
end %>
</def>
Invoked with:
<ajax-button action="up" image="up-arrow.png" title="Move UP"
imgclass="arrow-button" if="&can_edit?"/>
Note the method => :put. This was another area where the <a> tag has a
bug. The only way I could get the <a> tag buttons to be active at all
was to use :get in the <a> tag and in the associatd routes. With the
<ajax-button> tag, :put works in the tag and the routes.
The second issue was what appears to be a rails bug. I was updating
records in a belongs_to model but the changes were not propagating to
the associated has_many model. The fix was easy, but finding it was
not. All I needed was to call reload on the association after changing
the associated data. I was using a pattern that I used in Rails 2 (but
not since) which worked then without needing the call to reload. I got
to the point that I posted a question to StackOverflow, then answered my
own question after a lot of googling.
Don Ziesig
On 09/25/2014 09:44 PM, Donald Ziesig wrote:
Hi Ignacio,
I extracted the failing code and put it into github. Check
[email protected]:dziesig/demo_ajax_button_problem.git
The code is partially completed, I got to this point when I hit the
problem. Open the agenda, the show page illustrates the problem.
Click on any one of the Up Arrow buttons (except the top one), the
behaviour is correct. Click it again and see the problem. The Down
Arrow buttons have a slightly different problem of their own, but I
think once I get the Up working properly the Down will follow quickly.
The files up.html.erb and down.html.erb are there only because I got
"template missing" errors on the second button click without them.
Meanwhile, I am going to try to figure out why the second and later
button clicks show as HTML rather than JS.
Thanks,
Don
P.S. In the source application, I ran into the failure in rendering
partials from dryml on the second try that I described a long while
ago. The somewhat convoluted code in this demo is part of my attempt
to work around that issue.
On 09/25/2014 05:28 PM, Ignacio Huerta wrote:
Sorry Don, I could not follow your example :S. It's indeed a weird
bug. I suggest:
* If you want to use Dryml and Ajax updates, it might be better to
use the <div part="something">...<a updates="#something"... syntax
* For updates with Jquery and Rails style, it might work easier a
small partial in ERB/Haml
* Still, it would be interesting to reproduce your issue, so if you
can provide some dummy code to reproduce, I'll be glad to play around
Warm regards,
Ignacio
On Thu, Sep 25, 2014 at 10:35 PM, Donald Ziesig <[email protected]
<mailto:[email protected]>> wrote:
Hi Ignacio!
The html_safe almost works. (I tried that but put it in the
wrong place :-[ ).
Now the only problem is much stranger.
When I click the button once, it generates a JS response and the
page renders correctly with appropriate data changes. The second
and all subsequejt times I click it generates an HTML response
and the page renders without the data outside the <def> and with
no styling. The data that is displayed is correct, it just looks
funny =-O . I did have to add an html template to get this far,
without it I just get a missing template exception. I didn't
think I would have needed the html and I would really like to get
the buttons to always generate JS like the first time.
It must have something to do with context because the html for
the button stays the same in firebug, it just works without ajax
on all clicks but the first.
Any Ideas?
Don
On 09/25/2014 12:06 PM, Ignacio Huerta wrote:
Hi Don,
Your HTML is being escaped. You need something like this:
$('#agenda_items').html('<%=j render(:partial =>
'agendas/table_plus',
:locals => { :this => @this }).html_safe %>');
You can also use "raw(html_string)" I think.
Please say if this doesn't help :)
Regards,
Ignacio
El 25/09/14 a las #4, Donald Ziesig escribió:
Another strange one:
I am trying to render a partial (dryml) from javascript.
The javascript
is a one-liner:
$('#agenda_items').html('<%=j render :partial =>
'agendas/table_plus',
:locals => { :this => @this } %>');
The partial is also rather trivial:
<table-plus with="&this.agenda_items"
fields="position, this">
<controls:><controls-with-up-dn/></controls:>
</table-plus>
Unfortunately, in the <div id="agenda_items" > ... </div>
Instead of the table-plus and all its entries being
rendered, the html
(correct as near as I can tell) is rendered as text:
<div class="table-plus"><div class="header"><div
class="search"> <form
action="" class="search-form" method="get"><div
class="hidden-fields"></div> <span
class="label">Search</span> <input
class="search" name="search" type="search"><input
class="button
submit-button search-button search-submit" type="submit"
value="Go"></form> </div></div> <table> <thead><tr
class="field-heading-row"> <th class="position-heading"> <a
class="column-sort position-heading-link"
href="/agenda_items/4-approval-of-last-month-s-minutes/ ****
The code in the partial renders correctly when invoked
directly.
What am I missing?
Thanks,
Don Ziesig
--
You received this message because you are subscribed to the
Google Groups "Hobo Users" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:hobousers%[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/hobousers.
For more options, visit https://groups.google.com/d/optout.
--
Ignacio Huerta Arteche
http://www.ihuerta.net
0034 645 70 77 35
--
You received this message because you are subscribed to the Google
Groups "Hobo Users" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/hobousers.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "Hobo Users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/hobousers.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/hobousers.
For more options, visit https://groups.google.com/d/optout.