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


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 %>
...
  • 2016년 06월 07일에 작성됨

  • 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 어떤 버전을 사용중이신가요?    김현일 (Kevin Kim)   2016.6.10 00:05     
  • 4.2.1 사용중입니다    파츠군   2016.6.10 00:07     
  • 혹시 실제 파일명이 `A_controller.rb`, `B_controller.rb` 이와 같이, 대문자 알파벳 한 글자로 되있나요?    김현일 (Kevin Kim)   2016.6.10 00:14     
조회수 232


1 답변


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

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


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close