2011-01-29 4 views
0

특정 날짜 범위 내에 추가 된 항목을 찾기 위해 MySQL 데이터베이스를 쿼리하는 레일즈 컨트롤러 함수를 작성했습니다. 예를 들어 다음과 같은 내용이 표시됩니다.Rails에서 날짜 범위별로 검색하려면 어떻게해야합니까?

@foos = FooTableModel.where(created > ? AND created <= ?', DateTime.new(2011, 1, 26), DateTime.new(2011, 1, 29)) 

이 쿼리는 내 용도로 적합합니다. 그러나 사용자가 원하는 날짜 범위를 명시 적으로 설정하지 않고 설정할 수 있도록하고 싶습니다. 나는 erb 파일로 다소 찌르다가 데이터에 접근하는 데 큰 성공을 거두었습니다. 나는 변경을 독점적으로 바랬습니다. 무엇을 표시해야합니까?

내가 달성하고자하는 것과 유사한 예가 있습니까? Rails 개발자들이 사용자가 할 수있게 해주고 싶지만 리드를 많이 얻지는 못했다고 생각합니다.

답변

2

양식 코드는 어디에 있습니까?

<% form_tag(foo_path) do %> 
    <% select_date :start_date %> 
    <% select_date :end_date %> 
    <%= submit_tag "Submit", :disable_with => "Submitting..." %> 
<% end %> 

그런 다음 컨트롤러에 당신이 그 날짜별로 검색 매개 변수를 사용할 수 있습니다

다음은 표준 REST 양식입니다.

start_date = params[:start_date] 
end_date = params[:end_date] 

foo_path은 편안한 경로 여야합니다. 그 다음이 아닌 경우 당신은 당신이 이런 식으로 뭔가를 할 수 컨트롤러에서 해시에게 {:controller => 'foo', :action => "find"}

전달해야합니다 이것은 매우 도움이 될 찾고 있습니다

def index 
    if params[:start_date] && params[:end_date] 
     start_date = params[:start_date] 
     end_date = params[:end_date] 
     @foos = Foo.find(:all, :conditions => ['created_at BETWEEN ? AND ?,' start_date, end_date 
    end 
    responds_to do |format| 
     format.html 
    end 
end 
+0

. 이 코드를 통합했지만 제공 한보기 코드의 두 번째 줄에 문제가 있습니다. undefined method 'day'for : start_date : Symbol 모델이나 컨트롤러에 뭔가를 추가해야보다 행복해 집니까? – keybored

+0

아하, 다음과 같이 보일 것입니다. <% = select_date Date.today, : prefix => : start_date %> – keybored

+0

대단히 고마워요. 대본에 마지막으로 한 가지 문제가 있었지만, 연도/월/날짜 정보에 잘못 액세스했습니다. 도와 줘서 고마워! – keybored

관련 문제