2010-06-18 6 views
0

레일 새내기가 여기 있습니다.레일 : 링크가 하나의 속성을 변경 한 다음 뒤로 이동합니다.

items의 목록은 정수로 표시되고 (현재는 단지 1 = 활성 0 = 비활성) status 일 수 있습니다.

내가 원하는 것은 각각 item의 옆에있는 해당 항목의 status을 변경하는 링크입니다. 그래서 다음과 같습니다

좋은 아이템 -

안 나는 링크를 작동하게하는 방법을 생각할 수 없다 -

또 다른 꽤 항목을 설정합니다. 사용자가 링크를 클릭하면 페이지가 새로 고침되고 item이 업데이트됩니다. 나는 그것이 불완전 알고

<%= link_to "Enable", :controller => "items", :action => "update", :status => 1 %> 

답변

1

기본 레일 컨트롤러가 구현 된 경우이

<%= link_to "Enable", :controller => "items", :action => "update", :status => 1 %> 

업데이트 작업을 레일로 인해 작동하지 않는 것은

@item.update_attributes(params[:item]) 

를 호출하고 상태는 방법은 PUT해야 업데이트 전화, 그 옆에

params[:status] 

으로 컨트롤러에 것입니다. 나는 그가 그의 모델의 필드를 업데이트하기 위해 제공 휴식을 기본 업데이트 작업을 사용한다고 생각

<%= link_to "Enable", :controller => "items", :action => "update", :method => :put :item => {:status => 1} %> 
+0

멋지다, 나는 그것을 시험해 볼 것이다! – Jay

1

내가 할 줄 뭔가

# view 
<% @items.each do |item| %> 
    # ... 
    link = link_to_remote((item.active? "Disable" : "Enable"), :url => { 
     :controller => "items", :action => "swap_status", :id => item.id 
    }) 
    <%= item.name %> - <%= link %> 
<% end %> 


# item model 
class Item < ActiveRecord::Base 
    # ...  
    def active? 
     self.status == 1 
    end 
end 

# items controller 
class ItemsController < ApplicationController 
    # ... 
    def swap_status 
     item = Item.find(params[:id]) 
     new_status = item.active? ? 0 : 1 
     item.update_attribute(:status, new_status) 
     # and then you have to update the link in the view, 
     # which I don't know exactly how to do yet. 
    end 
end 

처럼 ...하지만 난 어떻게 든 도움이되기를 바랍니다 :

이 작동하지 않습니다]

+0

:

처럼 뭔가에 대한 링크를 변경해보십시오. 그렇게하기위한 새로운 행동을하는 것은 매우 추천되지 않습니다. – robertokl

관련 문제