jquery
  • ruby-on-rails
  • ruby-on-rails-3
  • unobtrusive-javascript
  • 2012-12-09 1 views 0 likes 
    0

    난이, 난 그냥 아직 파악하지 않은 간단 확신 ... 레일 jQuery로 리디렉션이 그를 보내드립니다 이 모델 그는 (SO처럼,하지만 질문 사업부의 아무 곳이나 클릭하면 질문에 리디렉션)을 클릭 나는 각각의 질문에 대해 나는 경우에 대한 apprpriate URL을 얻을 것이다 on-click="window.location = '<%= question_path(question) %>'"을 사용하기 전에,는 <p></p>가 나는 사용자가이를 클릭 할 큰 사업부가

    <% @questions.each do |question| %> 
    <div id="question-<%= question.id%>" > 
    .... question details here ... not important to the question 
    </div> 
    <% end %> 
    

    지금 div가 클릭되었습니다.

    내가

    question.js.erb (별도의 파일에) jQuery로이를 변경하려면 :

    $(function() { 
        $([id^="question-"]).bind("click", function() { 
         window.location = <%= question_path(question) %> 
        }); 
    }); 
    

    하고 정확하게 내 문제 야 있습니다 .. JS 파일은 알 수 없습니다 무엇 question은 그 이후로 변수가 each 루프에 있습니다.

    올바른 경로를 생성하는 데 사용할 수 있도록 JS에 정보를 전달하는 방법이 있습니까?

    라훌의 GARG의 조언에 구현 된 솔루션은 데이터 - 속성에게 HTML5를

    <div id="question-<%= question.id%>" data-questionurl= '<%= question_path(question) %>'> 
    

    후 나는이 솔루션을

    window.location = this.getAttribute("data-questionurl"); 
    

    을 희망 JS는 않습니다에서 만드는 것입니다

    답변

    2

    .erb 파일은 페이지에 렌더링 될 때 한 번 처리됩니다.

    모든 경로 헬퍼는 단 한 번만 사용할 수 있으므로 별도의 ajax 호출을하지 않는 한 클라이언트 측에서 레일 헬퍼 (또는 다른 레일 코드)를 호출 할 수 없습니다.

    • 저장합니다 #question 사업부 자체에서 일부 attr의 경로와 JS 함수를 가져 오기 :

      그래서,이 경우 귀하의 옵션이 있습니다. JS 배열/해시

    • 저장 경로를 적절하게
    • collection로 대신 questions_path을 가지고 당신의 경로를 수정을 유지하고 그것을 사용 당신이 당신의 js에서 쿼리 매개 변수 id을 추가 할 경우 대신 question/5//question?id=5 같은 member에 당신의 자기 자신을 기능시키고
    +0

    덕분에, 나는 우리의 조언으로 구현 된 해결책으로 질문을 편집했다. –

     관련 문제

    • 관련 문제 없음^_^