나는이 팀 소유자가 선수 순위 일련의 기준을 구축 할 수 있습니다 내 hobby project 중심의 야구 드래프트에 대한 다음과 같은 인터페이스 : 목록에 그 속성을 추가합니다link_to_function을 리팩터링하는 가장 좋은 UJS 방식은 무엇입니까?
속성을 클릭을 , 그것에게 중요성 요인 및 종류 방향을주십시오.
에서 레일 2와 레일 3 (프로토 타입 헬퍼와 함께) - 나는함으로써 이런 짓을 다음
<div class="rankingvaluecloud">
<ul>
<% @rankingattributes.each do |attributename| %>
<li><%= add_ranking_attribute_link(attributename) %></li>
<% end %>
</ul>
</div>
<div id="rankingattributes">
</div>
"add_ranking_attribute_link (AttributeName에이)"인 경우 :
def add_ranking_attribute_link(attributename)
link_to_function attributename do |page|
page.insert_html :bottom, :rankingattributes, :partial => 'ranking_attribute', :locals => {:attributename => attributename }
end
end
내가 ' 이 jquery 변환 m,하지만 그것을 수행하는 가장 좋은 방법은 잘 모르겠습니다 - 주로 루프 관련된 때문입니다. 나는 이것을 할 수있다 :
<div class="rankingvaluecloud">
<ul>
<% @rankingattributes.each do |attributename| %>
<li><%= link_to(attributename,'#',:class => 'attributeappend', :onclick => "$('#rankingattributes').append('#{escape_javascript(render(:partial => 'ranking_attribute',:locals => {:attributename => attributename}))}')") %></li>
<% end %>
</ul>
</div>
<div id="rankingattributes">
</div>
기본적으로 link_to_function을 대체하고있다. 그러나 더 좋은 방법이 있습니까? UJS 방법은 내가 같은 일을 할 것이다 :
$(".attributeappend).click(function() {
$('#rankingattributes').append('#{escape_javascript(render(:partial => 'ranking_attribute',:locals => {:attributename => attributename}))}')
});
을하지만 그 때문에 AttributeName을 취급의 루프 외부에서 작동하지 않습니다. 솔직히 erb 및 javascript에서 약간의 손실이 생겨서 - 그리고 eruten과 javascript 구문 오류의 연약한 캐스케이드없이 렌더링 부분에 다시 삽입하기 위해 javascript 함수에 paruten으로 attributename을 전달하는 좋은 방법을 모릅니다. 그 중 디버깅에 실망합니다.
더 좋은 방법이 있어야합니다. (그리고 더 좋은 인터페이스를 제안합니다. 환영합니다!).
link_to 'attributename','#',:class => 'attributeappend'
을 다음 JS의 일치하는 비트
$(".attributeappend").click(function() {
$('#rankingattributes').append($('#template').html().replace(/toReplace/g, $(this).text());
return false;
});
이 당신이 아이디 template
있는 페이지에 보이지 않는 요소가 있다고 가정 할 것이다 :
해결책을 찾았습니까? – Btuman
아니, 나는 그것을 더 추구하지 않았다. 해킹 된 것이이 목적을 위해 충분히 잘 작동했다. – jay