2010-06-28 2 views
2

특정 조건이 충족 될 때 요소를 클릭하면 페이스 박스 링크를 표시하려고합니다. 조건이 만족스럽지 않으면 사용자가 클릭하는 것을 원하지 않습니다. 나는 내가 경우 조건을 넣어야 할레일 : 조건이 만족되면 페이스 박스 링크

<% if x == 5 %> 
    <a id="something" href="http://www.some_weird_link.com" rel="facebox"> 
<% end %> 
<div> 
    <!-- Loads of HTML and erb code here which should be shown no matter what condition --> 
</div> 

<% if x == 5 %> 
    </a> 
<% end %> 

참고 꽤 추한 인 그것을 달성하기 위해이 같은 일을하고 다만 조건이 만족하지 않을 때 </a> 내 HTML에지지 않도록. 이것은 나빠 보인다. 더 나은 방법을 제안 해 주시겠습니까?

link_to_if이 유망하지만 내 경우에는 큰 것으로 보이는 매개 변수에 링크 표시 텍스트를 넣으려고합니다. > 거짓 링크를 만들 것입니다 당신이 통과 = 경우 경우 :

답변

4

내가 몇 가지 사례를하려고 시도하고이 작품 => true의 경우, 당신이 경우 옵션에서 모두)

헬퍼 정의 통과하지 않는 경우 나 : 당신이 당신의 facebox 링크 방법을 (사용하고자하는 모든 시간을 당신이 도우미가 있으면

def facebox(*args , &block) 
    if !args.last.is_a?(Hash) || args.last.fetch(:if,true) 
     link_to *args , &block 
    else 
     block.call 
    end 
    end 

을하는 당신은뿐만 아니라 수도 모든 t를 가진 육체 나는 당신의 질문을 이해하면

<% facebox 'http://www.some_weird_link.com' , :id => 'something' , :rel => 'facebox' , :if => (x == 5) do %> 
    <div> 
     <!-- Loads of HTML and erb code here which should be shown no matter what condition --> 
    </div> 
    <% end %> 
+0

Joshua를 순전히 고맙다. ... 이것은 진짜로 좋다. 전망은 아주 청결하다. – Garfield

+0

이것은 정말 멋진 코드 조각입니다. 고마워요 조슈아 – sameera207

1

이 옵션을 통과하면 연결되지 않습니다 (

<%= "<a id='something' href='http://www.some_weird_link.com' rel='facebox'>" if x == 5 %> 
<div> 
    <!-- Loads of HTML and erb code here which should be shown no matter what condition --> 
</div> 


<%= " </a> " if x == 5 %> 
+0

감사 ... 그게 내가 가진 것보다 낫다. 그러나 나는 두 배의 ifs를 없애고 싶다. – Garfield

0

: - 그는 특별한 facebox 인수 것을 확인해, 예를 들어, 아마보기)

그런 다음 당신이보기에이 작업을 수행 할 수 있습니다 청소 도우미로 이동 될 수 있습니다 올바르게이 트릭을해야합니다 :

<%= ((x == 5) ? (link_to 'facebook', 'http://www.some_weird_link.com', :id => 'abc', :rel => 'facebox') : '') %> 

<div> 
    <!-- Loads of HTML and erb code here which should be shown no matter what condition --> 
</div> 
+0

안녕하세요 Sameera ... 답장을 보내 주셔서 감사합니다. 문제는 link_to 텍스트 (답변의 'facebook')가 실제로 html + erb 콘텐츠를 포함하는 큰

....
임을 나타냅니다. 그래서 이런 식으로 사용할 수 없었습니다. 도움을 주셔서 감사합니다 :) 감사합니다! – Garfield

+0

안녕, 그런 다음 데프 을 my_link 는 도우미 메서드를 작성,이 같은 시도 : 예를 끝 <당신의 HTML + ERB 및 참고를 만드는이 내부 또한 링크를 생성> : 데프 "

을 my_link 이 거대한 텍스트이며 긴 문자열을 가지고 있지만 "+ here +"

" 끝 을 클릭하고이 처럼 호출하는 경우 그것은 또한 링크로 작동 <% = ((X == 5)? (my_link : '') %>,210 여기 아이디어는 항상 게시물을 제출하기 전에 미리보기 창을 확인하시기 바랍니다 도우미에 환호 사 미라 – sameera207

+0

당신의 복잡성을 추가입니다 -이 코드는 독자 대부분 눈에 보이지 않는이었다. – halfer