所以我有模特合同和员工。从员工的节目HTML我希望能够为该特定员工添加合同。
这是我的show html
中的一行- hosts: localhost
tasks:
- set_fact:
all_vars: "{{all_vars | default([]) |union([item.key + ':{{' + item.key + '|to_json}}'])}}"
when: "{{not item.key.startswith('ansible_')}}"
with_dict: "{{vars}}"
- copy:
content: "{{ all_vars | join('\n') }}"
dest: "/tmp/tmp1.yml"
- template:
src: "/tmp/tmp1.yml"
dest: "/tmp/tmp.yml"
和我在合同控制器中的创建功能
<%= link_to 'Add Contract', new_contract_path(@employee) %>
修改
在farhan的建议之后,这就是我的代码看起来像
def create
puts "HERE IS"
puts params[:id]
puts "END"
#create contract here for employee
end
我的new.html
def new
@contract = Employee.find_by_id(params[:employee_id]).contracts.new
end
def create
@employee = Employee.find_by_id(params[:employee_id])
@contract = Employee.find_by_id(params[:employee_id]).contracts.build(contract_params)
...
end
和我的_form.html
<h1>New Contract</h1>
<%= render 'form', contract: @contract%>
<%= link_to 'Back', employee_contracts_path(employee_id: @employee) %>
但如果我到了网址<%= form_for(contract) do |f| %>
...
<% end %>
rails说
答案 0 :(得分:0)
在您的终端中运行rake routes
,在提交该表单后,您会看到new_contract_path(@employee)
正在查找包含操作new
的表单,它会转到create
操作。此外,如果您想要嵌套路线,那么它应该是
resources :employees do
resources :contracts
end
您需要创建名为new.html.erb
的表单。
<强>更新强>
更新routes.rb
后,您的路径助手也会改变,
在你看来,
<%= link_to 'Add Contract', new_employee_contract_path(employee_id: @employee) %>
在你的控制器中,
def create
#assuming Employee has_many contracts
contract = Employee.find_by_id(params[:employee_id]).contracts.build(contract_params)
if contract.save
#success case
else
#failure
end
end
def new
@contract = Employee.find_by_id(params[:employee_id]).contracts.new
end
private
def contract_params
#permit required params
end