0

한 페이지에 두 개의 양식이 있습니다. 이 중 하나가 업데이트 양식입니다. 다른 폼은 동일한 컨트롤러 동작으로 이동하지만 폼을 실제로 업데이트하지 않는 단일 단추입니다. 여기서 첫 번째 형태 :레일 - 한 페이지에 두 개의 양식이 있습니다.

<%= form_for [@project, @schedule] do |f| %> 
    <%= f.fields_for :tasks do |builder| %> 
     <%= render 'task_fields', :f => builder %> 
    <% end %> 
    <p><%= link_to_add_fields "Add task", f, :tasks %> 
    <p><%= f.submit "Submit" %></p> 
<% end %> 

그리고 여기 번째 형태 :

<%= form_tag project_schedule_path(@project, @schedule), method: "patch" do %> 
     <div><%= hidden_field_tag :emp_accepts, true %></div> 
      <%= submit_tag "Accept schedule", class: "btn btn-large btn-primary" %> 
<% end %> 

문제는 강한 파라미터이다. 강력한 매개 변수에는 schedule이 필요하며 첫 번째 형식 만 제공합니다. 그래서 두 번째 폼을 사용하려고하면 에러가 반환됩니다. 여기에 강한 PARAMS은 다음과 같습니다

def schedule_params 
     params.require(:schedule).permit(:emp_accepts, 
     tasks_attributes: [:title, :content, :_destroy])  
end 

답변

1

당신이 정말 각 작업에 대해 서로 다른 제어 방법을 사용한다처럼 보이는

<%= form_for [@project, @schedule], http: { method: 'patch' } do |f| %> 
    <div><%= f.hidden_field :emp_accepts, value: true %></div> 
    <%= f.submit 'Accept schedule', class: 'btn btn-large btn-primary' %> 
<% end %> 
0

에 두 번째 양식을 변경해야합니다. 그것은 당신이 미래에 변화를 쉽게 만들 것입니다.

관련 문제