2014-11-17 2 views
0

사용자가 특정 테이블을 선택하여 양식의 드롭 다운 메뉴를 사용하여 볼 수있는보기 (보기 # 1이라고 함)가 있습니다. 그 매개 변수는 내 컨트롤러로 전달됩니다. 내가하고 싶은 일은 컨트롤러가 매개 변수를 가져 와서 지시어의 뷰에있는 요소의 가시성을 변경하는 것입니다 (보기 # 2).Controller in Rails에서 뷰의 CSS를 변경할 수 있습니까?

뷰 # 2에는 3 개의 테이블이 있습니다. 내 컨트롤러에서 내 메서드가 실행되면 한 번에 하나의 테이블 만 표시되어야합니다. 현재 3 개의 모든 테이블에는 고유 한 ID가 있으며 CSS 파일에 display : none 속성이 있습니다. 따라서 사용자가 뷰 # 1에서 "1"을 선택하면 뷰 # 2에서 테이블 1의 표시를 차단하고 표 2와 3을 표시 : none으로 설정합니다. 컨트롤러에서이 작업을 수행 할 수 있습니까, 아니면 JavaScript로해야합니까? JavaScript에서이 작업을 수행해야하는 경우 컨트롤러에서 JS 함수 호출로 매개 변수 값을 전달하는 방법은 무엇입니까?

+0

일반적으로 방출 된 HTML을 수정하여 CSS를 변경하는 대신 다른 스타일을 사용합니다. jQuery를 사용하고 있습니까? – tadman

+0

컨트롤러에서 실제 논리를 수행하더라도 사용자가 선택을 제출할 때 제출을 철회하거나 자바 스크립트를 사용하여 선택 사항을 전선을 통해 전송해야합니다. 기본적으로, 이것을 할 수있는 방법이 있다면 그것은 나보다 잘됩니다. –

+0

아니요, tadman, 바로 루비, HTML 및 CSS입니다. 내가하고 싶은 것은 폼을 제출할 때 선택한 선택을 사용하여 필요에 따라 (표시되거나 숨겨진) 테이블의 속성을 변경하는 것뿐입니다. –

답변

0

당신은 아마 자신의 부분으로 각 테이블을 깰 만 표시 할 하나의 렌더링해야

def some_action 
    @table_to_show = "table_1" 
    # table_1 should be determined by the user's selection from View #1 
    # probably something like: @table_to_show = params[:user_selection] 
end 

하고보기 # 2 :

<%= render @table_to_show %> 

을하는 것입니다 차례로 템플릿을 렌더링하십시오 : _table_1.html.erb

CSS/js를 사용할 수는 있지만 컨트롤러 수준에서 처리되는 내용으로 사용해서는 안됩니다.

+0

이것은 완벽하게 작동했습니다. @ johndavid400, 구현하기가 너무 간단했습니다. 나는 SO가 감사를 말하는 데 사용 된 주석을 좋아하지 않는다는 것을 알고 있습니다. 그러나이 경우 감사는 순서에 있습니다! –

관련 문제