inplace select 에 필드추가 기능 넣기

super_inplace_controls 를 사용하는 중인데
이것이 select 값을 선택한뒤에 값을 세팅하는 액션이 실행된 후.

변경된 값으로 다시 되돌아와야하는데 그렇지 못하고 있다. 아마 버그인듯 한데.
ajax로 받아온 값을 다시 html 로 뿌려야 하는데 그렇지 않고 있는데다가
원래 값의 div 를 display:hide 시켜놓고 복구를 안한다. -_-

뭔가 매우 어설픈 플러그인인데...
일단 고고씽하기 위해서 몇가지를 수정해서 사용할려고 하는중이다.

vendor>plugin>super_inplace_controls 안에
super_inplace_controls.rb
 부분 수정
def draw_form(set_method, object, id_string, opts = {})
form_remote_tag(:url => { :action => set_method, :id => object.id },
:method => opts[:http_method] || :post,
:loading => update_page do |page|
page.show "loader_#{id_string}"
page.hide "#{id_string}_form"
end,
:complete => update_page do |page|
page.hide "loader_#{id_string}"
          page.show "#{id_string}"
          page.hide "#{id_string }_form"          
end,
:html => {:class => "in_place_editor_form", :id => "#{id_string}_form", :style => "display:none" } )
end
이 함수는 form 을 그려주는 함수인데 :complete 부분에서 page show, hide 부분을 추가했다.

이로써 결과값이 제대로 표현된다.

inplace_select에서 Add... 부분을 추가하기 위해서 rhtml 파일을 수정하고 컨트롤러 부분도 수정했다.

<%= inplace_error_div %>
<% 
choices = Locate.all.map {|e| [e.name, e.id] } 
choices.concat([["Add..", -1 ]])
%>
<%= in_place_select :field_script, :locate_name, :choices => choices %>


 def set_field_script_locate_name
    locate = params[:field_script][:locate_name]
    if locate.to_i > 0
      @field_script = FieldScript.find(params[:id])
      @field_script.locate = Locate.find(locate)
      @field_script.save
      id_string = "field_script_locate_name_#{params[:id]}"
      render :update do |page|
        page.replace_html id_string, @field_script.locate.name
        page.visual_effect :highlight, id_string, :duration => 2
      end
    else
      render :js => "new_name = prompt('Enter New Locate','New Locate');jQuery.post('/field_scripts/set_field_script_locate_new_name', {name:new_name, field_id:#{params[:id]}});"
    end  
  end
  
  def set_field_script_locate_new_name
    new_locate = Locate.create(:name => params[:name])
    @field_script = FieldScript.find(params[:field_id])
    @field_script.locate = new_locate
    @field_script.save
    id_string = "field_script_locate_name_#{params[:field_id]}"
    render :update do |page|
      page.replace_html id_string, @field_script.locate.name
      page.visual_effect :highlight, id_string, :duration => 2
    end    
  end

중간에 자바스크립트 부분은 New 값을 받아서 field 를 추가하는 액션을 실행시키기 위해서 만들어준 jQuery 함수이다.

뭐 나중에 다시보면 기억 나겠지..

'OLD POSTS' 카테고리의 다른 글

QT4 VS2008 Installer  (0) 2010.06.26
QT4 프로그래밍에서 한글 입출력 관련..  (0) 2010.06.25
Super inplace controls의 사용.  (0) 2010.06.10
PaperClip 사용방법.  (0) 2010.06.08
QT4에서 SLOT 을 선언하는 방버.  (0) 2010.06.03