0

我在一個視圖頁上有兩種形式。其中之一是更新表單。另一種形式是一個按鈕,它執行相同的控制器操作,但不實際更新表單。這是第一種形式:Rails - 在一個頁面上的兩種形式

<%= 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 %> 

的問題是強參數。強大的參數需要:時間表,只有第一種形式提供。所以當我嘗試使用第二種形式時,返回一個錯誤。這裏有強大的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

看起來你真的應該使用每個動作不同的控制方法。這將使您可以輕鬆地在將來進行更改。

相關問題