0

사용자의 has_many 관계를 업데이트하는 양식을 만들려고합니다. 보다 구체적으로 말하자면, 각 사용자는 평일 (모델이 완벽하게 작동하고 있습니다)이 많습니다. 확인란을 선택하여 추가 평일을 추가하는 양식을 추가하고 싶습니다. 참고로, (요약 된) 모델은 : 'User.find (1) .weekdays'나는 목록을 제공하는 양식을 가지고 싶습니다하지만 현재, 일요일, 월요일을 반환 할 수 있습니다 즉has-many-through 인스턴스 변수를 업데이트하기위한 양식을 만드는 레일

class User < ActiveRecord::Base 
    has_many :user_weekdays, dependent: :destroy 
    has_many :weekdays, -> { uniq }, through: :user_weekdays 
end 

class Weekday < ActiveRecord::Base 
    has_many :user_weekdays 
    has_many :users, -> { uniq }, through: :user_weekdays 
end 

평일 모든 시간에 사용자가 선택한 시간과 함께 제출됩니다. 제출일은 주중입니다.

평일은 < < (양식 항목)이지만 User.find (params [: id])와 같이 작동해야한다고 가정합니다. 그러나이를 수행하는 방법을 모릅니다.

저는 Rails에 처음 접했고 평범하지 않은 어떤 형태로든 길을 잃었습니다. 어떻게해야합니까? 나는 사냥을 한 적이 있지만 적용 할만한 것을 찾을 수는 없습니다. 보기 및 컨트롤러에서이를 구현하는 방법에 대한 조언은 대단히 감사하겠습니다. 미리 감사드립니다, 스티브. 각 요일에 대한 확인란을 표시하려면

답변

1

Ryan Bates의 우수 Railscast on the subject을 사용하여이 작업을 수행했습니다. 코드는 다음과 같습니다 :

<%= hidden_field_tag "user[weekday_ids][]", nil %> 
    <%= Weekday.all.each do |weekday| %> 
    <%= check_box_tag "user[weekday_ids][]", weekday.id, @user.weekday_ids.include?(weekday.id), id: dom_id(weekday) %> 
    <%= label_tag dom_id(weekday), weekday.day %><br> 
    <% end %> 

완벽하지 않지만 위와 비슷합니다. Devise (내 사용자 모델 관리)에서 추가 매개 변수를 정의하지 않았으므로 처음부터 저장하지 않을 것입니다. 코드는 다음과 같이이었다 수정 :이 사람을 위해 유용 증명

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:account_update) do |u| 
    u.permit({ weekday_ids: [] }, { wo_type_ids: [] }, :email, :current_password, 
      :password_confirmation, :password) 
    end 
end 

희망을 - 비디오 자습서를 체크 아웃, 그것은 (그리고 가치에 대한 가입)을 통해 완벽한 간결 실행이다!

스티브.

0

, 당신은이 코드를 시도 할 수 있습니다 :이 "weekday_ids는"사용자가 선택한 당신의 평일 ID를 포함

<% Weekday.all.each do |weekday| %> 
<%= check_box_tag "user[weekday_ids][]", weekday.id, current_user.weekday_ids.include?(weekday.id) %> 
<% end %> 

을하고 user_weekdays시를 통해 사용자 모델과 연관됩니다 그것은 구할 것이다.

+0

감사합니다. @mayank. 나는 아직도 이것을 구현하는 방법을 확신 할 수 없다. 어떻게 이것을 폼에 랩핑하고 입력을 보장하는지가 나중에 user.weekdays 변수로 푸시됩니까? 실례합니다. 특히 당신이 이미 위에 답변 한 적이 있다면, 나는 그것을 얻지 못할 것입니다. 스티브. – SRack