2011-09-19 1 views
0

사용자가 ActiveRecord 항목을 수정할 링크를 클릭하길 원합니다. 해당 레코드의 이름은 feed.disabled이며 링크는 해당 레코드를 truefalse 사이에서 토글합니다. 링크의 텍스트를 결정하는 도우미 메소드를 만들었습니다.사용자가 ActiveRecord를 수정할 수 있도록 Rails 앱에 버튼을 만드는 방법은 무엇입니까?

def disable_button(feed) 
    if feed.disabled? 
    return 'Enable Feed' 
    else 
    return 'Disable Feed' 
    end 
end 

제 질문은 실제로 두 가지입니다. 해당 도우미가 뷰에 올바른 텍스트를 표시 할 수 있습니까? feed.disabled 레코드를 현재 상태에 따라 true 또는 false으로 수정하는 링크를 얻으려면 어떻게해야합니까?

feeds_controller.rb :

def toggle_disabled_record 
    @feed = Project.find(params[:project_id]).feeds.find(params[:id]) 
    @feed.toggle!(:disabled) 
    render :nothing => true 
end 

projects->show.html.erb :

<%= link_to toggle_disable_button(feed), toggle_disabled_record_project_feed_path(feed) %> 

routes.rb :

resources :projects do 
    resources :feeds 
end 

resources :feeds do 
    resources :xml_fields 
    get toggle_disabled_record, :on => :member 
end 

답변

2

(내) this blog post을 살펴보십시오. 버튼이 아니라 링크입니다. 그러나 다소 직접적으로이 문제를 해결합니다.

+0

귀하의 게시물을 거의 그대로 따라 왔지만 라우팅 방법이 정의되지 않은 오류가 계속 발생합니다. 나는 라우팅이 어떻게 작동하는지 결코 이해하지 못했다.하지만 나의 레코드 정렬 방식은 Project has_many Feeds이다. 위에 추가 한 방법을 붙여 넣었습니다. – Paul

+0

왜 '토글'을 사용하지 않습니까? 귀하의 경로가 무엇인지, 또는 어떤 링크를 사용하려고하는지 모르겠으므로 도움이되지 않습니다. –

+0

죄송합니다. 업데이트 된 방법을 게시하는 속도가 느려졌습니다. 지금 확인하십시오. – Paul

1

편집 데이브의 안내에 따라 방법을 추가하는도우미가 작동하지만 이름이 실제 버튼 요소를 반환한다는 아이디어를 제공합니다.

def toggle_disable_button(feed) 
    button_text = feed.disabled? ? 'Enable feed' : 'Disable feed' 

    button_to(button_text, toggle_feed_disabled_path(feed)) 
end 

이것은 물론 당신이 일치하는 컨트롤러 액션과 경로를 가질 수에 따라 달라집니다 :

당신은 아마 이런 도우미를 찾고 뭔가 button_to를 사용하여 이러한 버튼을 생성 할 수 있습니다. 당신은 또한 다음과 같은 버튼을 만들 수 있습니다

button_tag(button_text, :name => 'feed[disabled]', :value => !feed.disabled?) 

하지만이 모든 브라우저에서 작동하지 않을 수 있습니다.

+0

제목에 실수가 있었으며 '버튼'대신 '링크'를 넣으려고했습니다. 나는 당신이 'button_to'를 제안하는 곳에서'link_to'를 하위로 할 수 있다고 가정합니다. 컨트롤러 동작에 관해서, 나는 실제로 다른 도우미 메서드를 작성했습니다 (위에서 추가했습니다). – Paul

+0

당신은'link_to'를 사용할 수 있습니다.하지만 실제로는': method => : put' (또는': post')을주고 싶습니다. 'link_to'에 대한 문서와 예제가 여기에 있습니다. (http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to – Frost

+0

) 두 번째 헬퍼가 당신의 제안과 함께 작동하지 않는다는 것을 알게되었지만. – Paul

관련 문제