Rails에서 link_to를 이용하여 ajax 와 js.erb호출에 대해 질문드립니다.

조회수 1822회

link_to와 remote: true를 이용하여 간단한 ajax 콜을 구현하고 있는데

같은 view폴더 내에서의 erb에서 link_to로 하는 ajax콜은 잘 호출이 되서 js.erb파일을 잘 불러오는데

render :partial로 불러온 erb내에서 link_to로 호출하는 ajax콜은 이상하게 계속 템플릿을 찾을 수 없다고 나옵니다.

그래서 서버 로그를 보니까 같은 view내에서의 link_to 콜은 processing as JS로 잘 호출이 되는데

템플릿을 찾을 수 없다고 하는 link_to 콜은 processing as HTML로 들어가서 계속 missing template으로 나오네요.

route가 꼬였나 싶어서 js.erb 대신 html.erb 파일을 만드니 이건 잘 불러오네요.

스택에서 몇가지 키워드로 검색을 해봤지만 검색을 잘 하질 못한건지 어떤 답변으로도 해결이 되질 않았습니다.

respond_to :js를 해당 컨트롤러에 넣어보라는 답변이 많았는데 그대로 해보니까 UnknownFormat 에러가 떠서 어떻게 해야할지 잘 모르겠습니다.

프로젝트 구조는 아래와 같습니다.

controllers/B_controller.rb

class BController < ApplicationController

  def action
    ...
    #respond_to :js  #UnknownFormat 에러 발생
  end 

end

views/B/action.js.erb

...

views/A/foo.html.erb

...
<%= render :partial => "/C/nav" %>
...

views/C/_nav.erb

...
<% list.each do |item| %>
  <%= link_to 'Action', B_action_path(item), remote: true %>
<% end %>
...
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • views/A/foo.html.erb 는 어디서 쓰이나요? render partial로 불러온 곳에서도 link_to remote:true는 잘동작해야하는데..; 알 수 없는 사용자 2016.6.9 17:13
  • AController에서 호출하는 액션에 대한 erb입니다.. index역할을 하는 녀석인데 딱히 안되야할 이유를 모르겠어요;; 알 수 없는 사용자 2016.6.9 23:21
  • 혹시 Rails 어떤 버전을 사용중이신가요? 알 수 없는 사용자 2016.6.10 00:05
  • 4.2.1 사용중입니다 알 수 없는 사용자 2016.6.10 00:07
  • 혹시 실제 파일명이 `A_controller.rb`, `B_controller.rb` 이와 같이, 대문자 알파벳 한 글자로 되있나요? 알 수 없는 사용자 2016.6.10 00:14

1 답변

  • /views/B/action.js.erb 에서 디렉토리명을 대문자 B 에서 소문자 b 로 변경하시면 문제는 해결될거같습니다.

    To be /views/b/action.js.erb

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)