我有一个包含Company_id作为外键的Job模型。在Job新页面上,我想使用像这样的简单表单创建一个新作业
<%= simple_form_for (@job) do |f| %>
<%= f.input :title, label: "Title of job" %>
<%= f.submit 'Create', class: "btn btn-success" %>
<% end %>
这是我的嵌套路线
resources :companies do
resources :jobs, only: [:show, :new, :create, :update, :destroy]
end
在我的jobs controller new和create方法中,我有
def new
@job = Job.new
end
def create
@job = Job.new(job_params)
@company = params[:company_id]
@job.company_id = @company
if @job.save
redirect_to company_job_path
else
render :new
end
end
这是作业展示页面的路线
company_job GET /companies/:company_id/jobs/:id(.:format) jobs#show
和作业创建页面
company_jobs POST /companies/:company_id/jobs(.:format) jobs#create
当我尝试使用简单表单创建作业时,我一直收到以下错误。
没有路线匹配[POST]“/ jobs”
任何帮助将不胜感激。
答案 0 :(得分:2)
只需添加<%= simple_form_for [@company, @job] do |f| %>
而不是<%= simple_form_for (@job) do |f| %>
我假设您在呈现表单时设置了@company。
答案 1 :(得分:1)
根据您的嵌套路线,您需要在作业前设置UiModeManager#getCurrentModeType()
所以要么在使用此
company
控制器中的
before action set company
在视图中传递完整网址
before_action :set_company
def new
#@company = Company.find(params[:company_id])
@job = @company.jobs.new
end
private
def set_company
@company = Company.find(params[:company_id])
end