라디오버튼을 선택할때마다 DB갱신을 하고 싶습니다.

304 views
Skip to first unread message

Sunny

unread,
Oct 8, 2010, 8:39:27 AM10/8/10
to 한국 루비 사용자 모임
안녕하세요.

처음 페이지를 열면,
비디오링크를 가진 테이블에서 데이타를 읽어와서, 라디오버튼을 가진 링크주소들이 주르륵 리스트되어있구요.
그중에 하나를 선택하면 DB레코드가 갱신이 되도록 하고싶습니다.

구글링을 해보니 submit을 해야지만 가능하다고 해서 버튼추가를 했는데도, 아무런 반응이 없네요.
제가 해놓은것은 다음과 같습니다. (일부만 발췌)
[뷰에서]
<table>
....
<% @videos.each do |video| %>
<tr>
<td>
<div id="radio_buttons">
<%=radio_button_tag 'sel', video.id, checked?(video.selection)
%>
<%=h video.title %>
</div>
</td>
</tr>
....
</table>
<%= link_to_remote 'Select!', :url => {:action=>"index"}, :submit
=>'radio_buttons' %>

그리고 컨트롤러에서는,
def index
...
if request.post?
flash[:notice] = 'Something happened!'
format.html { redirect_to :action => 'index'}
end
...
end

무엇이라도 되었다면 저 메시지가 나와야 할텐데, 에러도 없고 무반응이네요.

요약하면,
(1)라디오버튼 누를때마다 DB 테이블 레코드갱신을 할 수 있는 방법이 있는지 알고 싶습니다.
(2)만일 (1)의 방법이 안되고, 버튼을 눌러야지만 된다고 한다면, 저 위의 코드가 왜 동작을 안하는지요..

두가지에 대해서 조언 부탁드리겠습니다.
감사합니다.

Message has been deleted

Sangmin Ryu

unread,
Oct 8, 2010, 9:13:33 AM10/8/10
to rub...@googlegroups.com
1) radio button 의 이벤트를 javascript 로 잡아서 처리하세요.
http://www.hscripts.com/tutorials/javascript/dom/radio-events.php

만약 jquery 를 쓰신다면 change 이벤트를 사용하시면 될듯합니다. http://api.jquery.com/change/

2) 가능하니까. 그리고 일단 저 코드만으로는 정확히 알수가 없습니다.
다만 저 코드만 볼때 link_to_remote 가 원하시는 form 액션과 별개로 구성되어 있을 것 같습니다.

link_to_remote 부분은 rails가 생성하는 javascript가 들어갑니다.
FireBug 같은걸로 디버깅 해보시면 왜 동작하지 않는지 알수 있을 겁니다.


2010/10/8 도리도리 <any...@gmail.com>:
> 아직 초보라 잘 모르겠지만 제 생각을 말해볼께요..
>
> 라디오 버튼 대신 콜렉션 요소에 각각의 div에 뿌려주고
> 각각의 라디오버튼에 해당하는 div에대해 id와 버튼으로 행동하기 위한 class를 주고
> 해당 div를 클릭하면 함수가 실행되도록 토글시켜서 ajax요청을 보내면 안되나요?
>
> $(document).ready(function() {
>  $('#vid_<%=  video.id %> .btn').toggle(function() {
>    //ajax load요청
>  }, function() {
>    //ajax load요청해지
>  }
> }
> 제가 말한 내용이 답이 아닐지라도 ajax로 처리하는게 답일 것 같네요..

--
http://neocoin.net

Sangmin Ryu

unread,
Oct 8, 2010, 9:15:49 AM10/8/10
to rub...@googlegroups.com
한가지 빼먹었네요.

2) rails 3부터는 link_to_remote 를 쓴다고 javascript 가 그대로 삽입되지 않고, 예약된 클래스를
이용해서 단순 class만 추가해서 출력합니다.

2010/10/8 Sangmin Ryu <neo...@gmail.com>:

--
http://neocoin.net

Sunny

unread,
Oct 8, 2010, 6:25:54 PM10/8/10
to 한국 루비 사용자 모임
안녕하세요.
알려주신대로 자바스크립트로 하니 좀더 간단하게 되었네요.
감사합니다.
알려주신 사이트에는 가능하다는 간단 설명만 있어서 어찌해야할지 잘 가닥을 못잡다가,
또 한참을 이것저것 해보았더랬는데,
결국은
":onclick => remote_function" 을 사용했습니다. 이게 참 유용하더군요..
여전히 웹프로그래밍언어는 익숙해지는데 시간이 좀 걸리네요..ㅠ.ㅠ

바로바로 답변을 주고 계신 여러분들께 감사드립니다...


On Oct 8, 9:13 am, Sangmin Ryu <neoc...@gmail.com> wrote:
> 1) radio button 의 이벤트를 javascript 로 잡아서 처리하세요.http://www.hscripts.com/tutorials/javascript/dom/radio-events.php
>
> 만약 jquery 를 쓰신다면 change 이벤트를 사용하시면 될듯합니다.http://api.jquery.com/change/

Reply all
Reply to author
Forward
0 new messages