0

내 응용 프로그램/색인에서 사용자는 드롭 다운 목록에서 위치 및 디렉토리 경로를 선택합니다. onchange 이벤트는 path를 취하는 file_dir이라는 컨트롤러를 호출하고, 그 디렉토리에있는 파일 목록을 매개 변수 @files로 다시 전달하는 명령 행 호출을 실행합니다. 그런 다음이 @files를 부분 변수로 전달합니다. 그런 다음 부분에 select 태그가 전달 된 파일 목록과 함께 표시됩니다.파일의 동적 목록을 partial에 전달하는 데 도움이 필요합니다. 레일에서 성공적으로 통과 할 목록을 가져올 수 없습니다.

ROR을 처음 사용하고 읽을 수있는 로컬 변수를 성공적으로 전달하지 못했습니다. 부분적으로. 모든 것은 하드 코딩 된 라인으로는 잘 동작하지만 로컬 변수에서는 그렇지 않습니다.

이 질문에 유래 stackoverflow.com, 여기

디렉토리받는 제 onchange를 드롭 패스 호출 방법이다 : I 테스트 IRB에서

def file_dir 
    unless params[:dir_list].nil? 
     @dir_path_choice = params[:dir_list] 
    else 
     @dir_path_choice = '/watchfolder/indemandvod' 
    end 
# @files = "#{@dir}"  
    @files = Dir.glob("#{@dir_path_choice}/**/*.{mpg,mov}").map 
    if @files.nil? 
     @files = Dir.glob("/watchfolder/hbovod/**/*.{mpg,mov}").map 
    end 
    render :partial => 'list_files', :locals => { @list => @files } 
    end 

를 @files = Dir.glob ("# {@ dir_path_choice}/**/* . {mpg, mov} "). 맵 라인이 제대로 처리되고 있는지 확인하십시오. 다음은 @ 파일의 모습입니다.

1.9.3-p547 :008 > @files 
=> #<Enumerator: ["/watchfolder/indemandvod/MJR-TEST.mov", "/watchfolder/indemandvod/MJR-TEST-AWS1.mov", "/watchfolder/indemandvod/MJR-TEST-AWS.mov", "/watchfolder/indemandvod/MJR-TEST2.mov", "/watchfolder/indemandvod/PIX_Gor_SVO40185/PIX_Gor_SVO40185_mezz.mov"]:map> 

이 데이터는 선택 목록에서 쉼표로 구분됩니다.

참고 : @ 기호없이 @list를 전달하려고 시도했지만 알 수없는 지역 변수 또는 메서드가있어서 @를 추가하지 않고 실행할 코드를 가져올 수 없습니다. 이것은 데이터 콜렉션과 같아서 배열로 해석 할 것으로 기대합니다. 확실하지. 여기

이 부분 파일 코드 :

<p>   
     <label>Select Partial Test File List:</label><%= @list %><br /> 
     <% unless @list.nil? %> 
      <%= @list %> 
     <% else %> 
      <label> list is empty. </label> 
      <% @list = Dir.glob("/watchfolder/showtimevod/**/*.{mpg,mov}").map %> 
     <% end %> 
     <%= select_tag 'filepath', options_for_select(@list, @selected_filepath) %> 
    </p> 

그것은 페이지에 다시 표시 않으며, 내 항상 '목록이 비어'가 표시되며 드롭 다운 상자 내 기본으로 채 웁니다에 대한 명령 줄을 '하드 코딩' '/ watchfolder/showtimevod/'파일 목록.

@selected_filepath는 목록에서 선택된 행을 유지합니다.

값을 부분 값으로 전달할 때 내가 잘못하고있는 것을 알지 못합니다.

내 응용 프로그램/인덱스에서
+0

'@ list' 부분적인 참조? 오류 메시지 만 표시 했으므로 매우 명확하지 않습니다. –

답변

0

,

에 "응용 프로그램/인덱스가"무엇

?

누군가 올바른 방법으로 설정하도록 안내해 줄 수 있습니까?

응용 프로그램/컨트롤러/some_controller.rb

def file_dir 
    puts "****#{params[:dir_list]}" 
    @files = %w[ a b c] 

    render :partial => 'list_files', :locals => { file_names => @files } 
    end 

보기/some_controller/_list_files.htm :

올바른 방법은 먼저 작업을 간단하게 뭔가를 얻을 수 있습니다.ERB는 :

<div> 

<%= file_names.each do |fname| %> 
<div><%= fname %></div> 
<% end %> 

</div> 

그리고이 라인의 모든 게시물과 같은

:

<%= select_tag(
     'filepath', 
     options_for_select(@list, @selected_filepath) %> 

@selected_filepath는 정의되지 않습니다.

이것은 데이터 모음과 비슷하므로 배열로 해석하면 으로 간주됩니다. 확실하지.

이해할 수있는 데이터를 만들려고 노력해야합니다. 당신이 줄을 달성하기 위해 노력하고있다 :

@files = Dir.glob("#{@dir_path_choice}/**/*.{mpg,mov}").map 

다음 줄은하지 않습니다 :

@files = Dir.glob("#{@dir_path_choice}/**/*.{mpg,mov}") 

이 :

내가없이 @list을 통과하려고 않았다 @ 기호를 사용했지만 알 수없는 지역 변수 또는 메소드가있어 @을 추가하지 않고 을 실행하여 코드를 실행할 수 없습니다.

으로 충분하지 않습니다. 오류 메시지의 해석에 대해 아무도 신경을 쓰지 않습니다. 사람들이 신경 쓰는 점은 파일 이름과 줄 번호가 포함 된 정확한 오류 메시지이며 오류가 참조하는 정확한 코드와 함께 게시물에 복사하여 붙여 넣는 것입니다. 그냥 작동하도록 코드를 얻고 싶은 경우에

, 당신은이 작업을 수행 할 수 있습니다

응용 프로그램/some_controller.rb을 그러나

def file_dir 
    if params[:dir_list].nil? 
     @dir_path_choice = '/watchfolder/indemandvod' 
    else 
     @dir_path_choice = params[:dir_list] 
    end 

    @files = Dir.glob("#{@dir_path_choice}/**/*.{mpg,mov}").map 

    if @files.nil? 
     @files = Dir.glob("/watchfolder/hbovod/**/*.{mpg,mov}").map 
    end 

    render :partial => 'list_files', :locals => {file_names => @files } 
    end 

를, 당신의 디렉터리의 끝에지도를() 추가. glob()는 아무런 도움이되지 않습니다.

응용 프로그램/뷰/some_controller/_list_files.html.erb : 당신은 당신이 또한 모두에서 멀리 했는가, 컨트롤러에`@의 list`에서`@`를 멀리했다

<p>   
    <label>Select Partial Test File List:</label> 
    <%= select_tag 'filepath', options_for_select(file_names) %> 
</p>