본문 바로가기

Ruby on Rails

뷰와 콘트롤러와의 연결

지금까지 레일스를 두어달 남짓 해오면서 거의 예제를 따라해보거나 플러그인을 주로 가져다 쓰다보니  컨트롤러와 뷰를 내가 고스란히 처음 부터 만들어 본적이 없었다.

사실 아직도 그렇긴 하다.

아무튼 그래도 얼마전 부터는 전보다는 많이 고쳐보고 있는데, 입력이나 수정 폼에 셀렉트 박스 하나를 넣을 일이 있었다.

그런데 그것조차 하나 맘처럼 쉽게 안되는것이다. 비슷한 기능을 form_for로도 하고 form_tag으로도 하는데 새로 만드는 뷰인 new.rhtml에서는 form_for를 써줘야하고 수정하는 뷰인 edit.rhtml에서는 form_tag을 써야만 되는 것이다.

이경우는 두 뷰가 _form.rhtml로 텍스트 박스와 셀렉트 박스등이 들어 있는 부분을 공유하고 있는 상황에서 벌어진 일이다.

내가 잘 몰라서 그런건지 버그인지 잘 모르겠지만 (나중에 보면 대부분 내가 잘 모르던걸로 판명남--;) 그거 때문에 고생한 시간들을 생각하면 적잖이 열받는 대목이다.

다른분 들은 그런 경험이 없으신지 궁금하다.  포럼에 올렸더니 그런 경험이 있다는 글은 안올라온다.

어쨌든 그 문제는 그렇게 넘어 갔으나....


이젠 DB의 테이블에 있지 않은 항목을 뷰에서 입력하여 컨트롤러에서 처리하는 부분을 만들게 되었다.

다른게 아니고 검색을 구현해야할 필요가 생긴것이다.  어떤 목록의 제목을 대상으로 검색어를 받아서 비교하여 결과를 내주는 부분을 구현해야 하는데, 이런걸 또 첨해보다보니 스캐폴드에서 자동으로 만들어 놨던 부분을 고치거나 책을 보면서 하려니, 이게 상황이 달라서 그런지 맘처럼 안움직여 준다.

결국 처음 써보는 params[:search][:keyword] 이런 중괄호 두 개 짜리 파라메터를 써서야 제대로 동작을 하게 됐다. 스캐폴드에서 만들어 주는 코드엔 저런걸 본적도 없었기에 가능한지도 몰랐는데, 로그 화일을 보니까 말로만 듣던 해쉬안의 해쉬 방식으로 파라메터 들이 넘어가고 있기에 그런건 어떻게 표현해야되는지  책을  뒤지다 보니 저런 방법을 쓰는 것이다.

이게다 기본기가 부족한 채로 프로젝트를 하다보니 벌어진 일인데,  그렇다 해도 기본을 다 공부하고 나서 프로젝트를 짜는것보다는 이렇게 그때 그때의 필요성에 따라 공부를 하는게 나는 더 확실하다고 생각한다.

속도도 빠르다고 생각했는데, 아직은 확신이 안서네 ㅎㅎ

이제 검색 키워드를 여러개 넣었을 때 키워드들 간의 and 조건으로 찾고 or 조건으로 찾고 찾은 것들 순위매기는 부분은 구현해야 된다.

beast라는 릭 올슨이 만들고 있는 프로그램에 보니 덜렁 한 단어(덩어리)로만 검색하고 마는 단순함을 선택했고, 43things 정도 되니까 여러 키워드 검색이 되더군.

이미 목표 시간이 늦었다. 속도냐 완성도냐의 문제인데 여기서 더 깊이 들어가는건 완벽 주의에 빠지는 잘못을 범하게 되는것이 아닐까 싶다.

개봉 후 수정으로 하자.