2011-09-19 3 views
1

나는이 문제를 해결하기 위해 노력했다. 그러나 나는 그것을하기 위해 노력하고 있었다. 아무리 줄 잡아 말하더라도 끔찍했다. Ruby 루프에서 특정 인수가 충족 될 때 jQuery show() 메서드를 호출해야합니다. 내 생각은 예제와 비슷한 Javascript 태그였다. 하지만 어떤 이유로 jQuery는이 javascript 태그에서 작동하지 않습니다. 저는 지금하고있는 것보다 더 나은 방법을 생각할 수 없습니다.jQuery는 자바 스크립트 루비 태그에서 작동합니까?

코드 :

<% @records.each do |record| %> 
      <% if record.task.project.name == "SKIP"%> 
      <%= javascript_tag :defer => 'defer' do -%> 
       $('.toil.).show(); 
      <% end -%> 
      <% else %> 
<%= javascript_tag :defer => 'defer' do -%> 
        $('.toil.).hide(); 
       <% end -%> 

작품과 필자는 그 시험이 루프. 내가 원하는 것을 시도하는 더 좋은 방법이 있습니까? 이름이 skip 인 프로젝트가 있으면 클래스를 표시해야합니다. 그러면 해당 클래스가 숨겨져 있어야합니다. 당신은 선택기의 끝에 작은 따옴표 누락

$('.toil.).show(); 

: 거기에 오타가로 시작하기

답변

1

숨겨져 있거나 표시해야하는 항목의 본질을 실제로 설명하지 않으므로 여기에 대해 여러 가지 방법이 있습니다.

는 당 기록 HTML의 섹션이 있다면, 그냥 루프를 렌더링하지 않습니다

<% @records.each do |record| %> 
    <% if record.task.project.name != "SKIP"%> 
    All the HTML 
    <% end %> 
<% end %> 

를 그것이 될 수도 있기 때문에 당신이 아직도 눈에 보이는 나중에 렌더링해야 할 일이라면, 클래스를 설정합니다

그냥 플래그의 경우
<% @records.each do |record| %> 
    <% skipIt = record.task.project.name == "SKIP" ? "display: none;" : "" %> 
    <span style="<%= skipIt %>"> 
     All the HTML 
    </span> 
    <% end %> 
<% end %> 

나중에 사용되는 : 방법

<% skipIt = false %> 
<% @records.each do |record| %> 
    <% skipIt = true if record.task.project.name == "SKIP" %> 
    All the HTML 
    <% end %> 
<% end %> 
... 
$(function() { 
    <% if skipIt %> 
    $(".toil").hide(); 
    <% end %> 
}); 

등 제비. 우리가 알지 못하는 정말로 필요한 것에 달렸습니다.

(위의 예제 대부분에서이 기능은 아마의 일부 또는 적어도 도우미로 이동해야합니다.)

+1

그 테이블 셀에 데이터가있는 경우 표의 몇 행을 표시하려고합니다.이 표 셀은 이름으로 SKIP이있는 레코드로 채워집니다. 그래서 레코드가 없다면 그 행은 보이지 않아도 숨겨져있을 필요가 없습니다 ... – SD1990

+0

그러면 첫 번째 이유는 자바 스크립트를 사용하여 처음부터 렌더링 할 필요가없는 것을 숨기는 이유는 무엇입니까? –

+1

값이 없기 때문에 렌더링해야하지만 사용자가 입력 할 수 있으므로 필드가 있어야합니다. 사용자가 필드를 다시 표시하거나 숨길 때 사용하는 Jquery 토글 버튼이 있습니다. – SD1990

0

... 간단하지만 복잡한 것 같다.

그들은 예를 들어 있어야한다 : "수고"라는 CSS 클래스를 가진 모든 요소를 ​​표시합니다

$('.toil').show(); 

. Javascript와 jQuery는 HTML과 CSS에서 작동합니다. Ruby 태그를 읽거나 조작하려는 느낌이 들었습니다. JS가 데이터가 브라우저에 도착할 때 실행되어 루비 태그가 이미 처리되었으므로 작동하지 않습니다. 그리고 경우에 따라 html로 변환됩니다. D

+0

이 네 죄송 그건 그냥 질문에 대한 오타했다, 내 코드가 정상적인 방법으로. 두 번째 부분은 흥미롭고 ive는 결코 그렇게 생각하지 않았습니다. 하지만 루비가 돌아 다니고 js를 호출해야하는 지점에 도달하면 반드시 호출 할 것입니다. 아니면 브라우저가 그것을 호출하고 심지어 루비가 돌연히 치고 그것을 쳤을지라도, 그것은 실행되지 않을 것이라고 말하고 있습니까? – SD1990

+2

@ spartan2417, Ruby가 서버에서 실행됩니다. JavaScript는 클라이언트에서 실행됩니다. 자바 스크립트가 눈에 띄지 않게되기 전에 모든 루비가 사라졌습니다. –

+1

정확히 @Dave Newton이 말했듯이. 내가이 비즈니스에서 시작했을 때, 잘 이해하기 위해서 나는 항상 루비, JSP 및 asp.net을 "HTML 생성기"로 생각했지만, 브라우저가 보내는 입력에서 HTML을 생성하는 웹 서비스 일뿐입니다. 반면에 javascript는 브라우저에서 실행되는 스크립팅 언어이며 브라우저는 서버에서 생성 된 내용 만 볼 수 있으므로 JS는 HTML 및 CSS와 상호 작용할 수 있고 루비 태그, asp.net 태그, C# 코드 또는 그런 anyting. – vtortola

관련 문제