Rails

2012-03-30 16 views
33

içindeki bir bağlantı içine bir tablo satırı yapmak için , düzenleme sayfasına bir tablo bağlantıda bir satır yapmaya çalışıyorum. Linklerin oluşturulduğunu biliyorum, çünkü bunları yazdırabilirim. Ben yakınım ama önemli bir şey eksik. Bağlantının düzgün çalışması için neyi değiştireceğim? Rails

<h1>Scouts</h1> 
<p><%= button_to "Add a new Scout", new_scout_path, :method => :get %></p> 
<div class="message-board"> 
    <table> 
    <tr> 
     <th>Name</th> 
     <th>Rank</th> 
     <th>Advancement Date</th> 
     <th>Age</th> 
    </tr> 

<% @scouts.each do |scout| %> 
    <tr <% link_to edit_scout_path(scout) %> > 
     <td><%= scout.name %></td> 
     <td><%= scout.rank %></td> 
     <td><%= scout.advancement %></td> 
     <td><%= scout.age %></td> 
    </tr> 
<% end %> 
    </table> 
</div> 
+0

tr etiketinde onlick = location.href = 'PATH' özelliğini de kullanabilirsiniz. Bazı erb etiketlerinde çirkin biçimlendirme yapmak zorunda kaldım, ama mükemmel çalışıyor. – jhamm

cevap

62

Robin'in dediği gibi bu geçersiz HTML'dir. Muhtemelen yapmamalısın.

Kişisel olarak tr numaralı telefonu kullanarak jQuery'yi kullanarak bir onclick olayı koyarım. tr öğesi şöyle görünür:

<tr data-link="<%= edit_scout_path(scout) %>"> 
    ... 
</tr> 

Ve sonra (örneğin app/assets/javascripts/scouts.js olarak bir dosyada yerleştirilir) ilişkilendirilen JavaScript böyle bir şey olurdu:

$("tr[data-link]").click(function() { 
    window.location = $(this).data("link") 
}) 

Bu olan tüm tr unsurları yapacak data-link özniteliği, mümkün olabileceğini düşündüğüm en göze batmayan şekilde URL'lermiş gibi davranır.

+1

Bunu ele almanın js yolunu anlıyorum, ama neden bunu raylardan geçirmeyelim ve herhangi bir ji'yi çekmemeliydik? – jhamm

+11

Rails 3.2.3 ve jquery-ray 2.0.2 ile "this.data bir işlev değil" mesajını aldım. JQuery işlevinin içeriğini 'window.location = this.dataset.link' olarak değiştirerek çalışmasını sağladı. –

+1

Aynı mantıkta bu mantığı uygulamak istemediğimiz bir düğme veya bağlantı varsa ne olur? Şimdi bununla biraz uğraşmak. – jwg2s

0

Bu.dataset.link IE9'da çalışmayacağından, buradaki yanıtı Problem using elem.dataset with IE and JSFiddle kullanmayı düşünebilirsiniz.

+3

Bu soruya teorik olarak cevap verebilirken, [burada tercih edilir] (http://meta.stackexchange.com/q/8259) burada cevabın önemli kısımlarını içerecek ve referans için bağlantıyı sağlayın. – Spontifixus

5

Ben raylar üzerinde yeni ve takip ettiğinizi aynı sorun var ve bazı değişiklikler yaparak Ryan'ın tavsiye kullanmak - Sen $ (this) kullanmak zorunda

$("tr").click(function() { window.location = $(this).data("link") })

.

+0

Ayrıca, eğer ajax kısmi işleyiciler kullanılıyorsa, ** 'yi kullanın (' click ', function() {...}); ** bunun yerine ... – Gobol

+0

Bağlantıyı sol altta nasıl görünür hale getirebilirsiniz? Bu olmadan bildiğim kadarıyla, tarayıcıya verilen siteyi bulmasını zorlaştırıyor. –

+0

Kolayca görülebileceği bir linke css ekleyebilirsiniz. Bu bağlantının rengini veya bir şeyi değiştirin. –