2014-06-11 6 views
1

레일 4를 사용하고 있습니다. 내 컨트롤러에 숨겨진 필드를 보내려고합니다. 숨겨진 필드를 true로 설정하면 속성을 삭제하려고합니다. 지금 내 양식은 다음과 같습니다.현재 암호를 중지 할 수 없습니다.

버튼을 클릭하면 숨겨진 필드를 true로 설정하는 jQuery가 있습니다. 기본적으로 누군가가 "저장소 이름 제거"버튼을 클릭하면 값이 true 인 숨겨진 필드를 보내고 저장소 [name]을 데이터베이스에 삽입하는 것을 삭제하려고합니다. 내 현재 코드와 unknown attribute: _destroy을 얻을

def create 
    @store = Store.new(store_params) 

    if params[:_destroy] == true 
     params.delete :name 
    end 

    respond_to do |format| 
     if @store.save 
     ... 

그러나 : 같은

내 컨트롤러는 지금 보인다.

+2

이'params [: store] [: _ destroy]'의 목적은 레코드의 다른 속성을 비우지 않고 레코드를 파괴 할 수있게하는 것입니다. 양식을 제출하기 바로 전에 jQuery를 사용하여 대신 이름의 텍스트 입력을 비우기/비활성화하십시오. – MrYoshiji

+0

@MrYoshiji, 아하이 그래, 훨씬 더 의미가 있습니다! –

답변

1

나는 "상점 이름 제거"버튼을 클릭하면 입력을 해제하는 jQuery를 사용합니다 :

f.input :name, id: :store_name 

link_to 'Remove Store Name', '#', onclick: "$('form input#store_name').prop('disabled', !$('form input#store_name').prop('disabled'));return false;" 

긴 버전 : 비활성화 입력이에 포함되지 않습니다

f.input :name, id: :store_name 

link_to 'Remove Store Name', '#', onclick: 'handle_remove_store_name(); return false;' 

# javascript 
window.handle_remove_store_name = function() { 
    var current_disabled_state = $('form input#store_name').prop('disabled'); 
    $('form input#store_name').prop('disabled', !current_disable_state); 
} 

params는 양식을 통해 제출되었습니다.

관련 문제