2010-12-07 2 views
1

우선, 미리주의 해 주신 것에 감사드립니다. 레일스에서 ​​꽤 멍청한데, 어려운 일이 아닌 문제를 겪고 있지만 구현하는데 어려움이 있습니다. 여기 속성을 클릭 할 때 확인란을 바인드하면 어떻게 업데이트됩니까?

내 질문은 : 내가 사용 "권장 사항"의 목록을 표시하고 다음과 같은 부분 :

<tr> 
    <td class="recommendations"> 
<span class="content"> 
      <%= wrap(recommendation.content)%> 
     </span> 
<span class="timestamp"> 
      Posted <%=time_ago_in_words(recommendation.created_at)%> ago. 
</span> 
    </td> 
    <td> 
<%= form_for current_user.recommendations.find(:id => recommendation.id) do |f| %> 
    <label>Display</label><%= f.check_box :displayed, :onclick => "update"%> 
<% end %> 
    </td> 
</tr> 
:

<table class="recommendations" summary="User recommendations"> 
    <%= render @recommendations%> 
</table> 

는 그것은 dispayed "권장 사항"각각에 대해 다음 부분을 호출

그래서, 확인란에 recommation.displayed 속성을 바인딩하고 확인란을 선택했을 때 추천 자원을 자동으로 업데이트하고 싶습니다.

지금, 나는 다음과 같은 오류 가지고 있기 때문에 form_for에 전달할 적절한 "추천"인스턴스에 액세스 할 수 없습니다

Unknown key(s): id 

을 그리고 내가 확실하지 오전

:onclick => "update" 

내가하고 싶은 일을 수행 할 것입니다 : 나머지는 "PUT"메서드를 호출하여 데이터베이스의 리소스를 업데이트하십시오.

도와 주시겠습니까?

답변

1

이제 완료되었습니다.

레일즈는 check_box에서 체크 된 작업을 관리 할 수 ​​있지만 체크되지 않은 작업은 관리 할 수 ​​없습니다. 그것은 이전의 행동을 설명합니다.

나는 그것을하기위한 방법을 바꾸었고 나는 image_tag와 link_to를 사용했다.

<td> 
    <label>Display</label> 
<% if (recommendation.displayed?) %> 
<%= link_to image_tag("checked.png", :border=>0), :action => :hide, :id => recommendation %> 
<% else %> 
<%= link_to image_tag("unchecked.png", :border=>0), :action => :display, :id => recommendation %> 
<%end%> 
</td> 

그리고 컨트롤러 :

def display 
    @recommendation.displayed = true 
    unless @recommendation.save 
    flash[:error] = "Error displaying the recommendation." 
    end 
    redirect_back_or current_user 
end 

def hide 
    @recommendation.displayed = false 
    unless @recommendation.save 
    flash[:error] = "Error hiding the recommendation." 
    end 
    redirect_back_or current_user 
end 

그리고 특정 경로 :

get 'recommendations/display/:id', :to => "recommendations#display" 
get 'recommendations/hide/:id', :to => "recommendations#hide" 

이 지금은 잘 작동 여기에 코드입니다.

관련 문제