能否告訴我如何通過新的和創建的動作傳遞一個id。我嘗試了很多方法來解決這個問題,但不幸的是沒有成功。將id參數傳遞給新的創建動作 - Rails 4
什麼,我的目標是什麼,當求職者(用戶)在 應用填充和申請未能通過驗證,我希望有一個
new form to render with the advert_id passed
通過
我有一個招聘廣告中,我已經通過了advert_id的應用按鈕
advert/show.html.erb
<div class="advert_summary">
<ul class="content">
<li><%= @advert.currency %><%= @advert.salarystart %> - <%= @advert.currency %><%= @advert.salaryend %> <%= @advert.category_period.name %></li>
<li>Job Type: <%= @advert.category_jobtype.name %></li>
<li>Job Ref: #<%= @advert.reference %></li>
<li>Posted: <%= @advert.created_at.strftime("%b %d, %Y") %></li>
<li>Deadline: <%= @advert.appdeadline.strftime("%b %d, %Y") %></li>
</ul>
</div>
<button><%= link_to 'Apply for job', new_form_path(advert_id: @advert.id) %></button>
我有advert_id作爲隱藏字段在我的形式(這個職位的申請表)
forms/_form.html.erb
<div>
<h2>Application Form</h2>
<%= simple_form_for(@form) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input_field :firstname, value: current_user.firstname, label: "firstname", placeholder: "first name" %>
<%= f.input_field :lastname, value: current_user.lastname, label: "lastname", placeholder: "last name" %>
<%= f.input_field :tel, value: current_user.tel, label: "number", placeholder: "number" %>
<%= f.input_field :email, value: current_user.email, label: "email", placeholder: "email" %>
<%= f.hidden_field :advert_id, value: params[:advert_id] %>
</div>
<div class="form-actions">
<%= f.button :submit, 'Submit Application' %>
</div>
<% end %>
</div>
在我的控制器
forms_controller.rb我已經陳述的下面爲create action
class FormsController < ApplicationController
respond_to :html, :xml, :json
before_action :set_form, only: [:show, :edit, :update, :destroy]
def new
@advert = Advert.find(params[:advert_id])
@user = current_user
@form = Form.new
@search = Advert.search(params[:q])
@adverts = @search.result(distinct: true)
end
def create
@user = current_user
@form = Form.new(form_params)
@advert = @form.advert
@form.user_id = current_user.id
@advert = @form.advert
if @form.save
redirect_to application_submitted_path
else
redirect_to :action => :new, :advert_id => @form.advert_id
# render :new, :advert_id => @form.advert_id
# redirect_to :action => :new, :advert_id => @form.advert_id
# redirect_to user_advert_path(@form.advert.user, @form.advert)
# respond_with(@form)
end
end
end
models
advert.rb
has_many forms
form.rb
belongs_to advert
belongs_to user (jobseeker)
user.rb (jobseeker)
has_many forms
schemas.rb
create_table "forms", force: true do |t|
t.integer "advert_id"
t.integer "user_id"
end
create_table "adverts", force: true do |t|
t.string "title"
t.text "content"
t.integer "salarystart"
t.integer "salaryend"
t.string "reference"
end
create_table "users", force: true do |t|
t.string "email",
t.string "firstname"
t.string "lastname"
end
當求職者完成應用程序形式 (形式/ _form.html.erb)和驗證失敗的求職者(用戶)是 針對一個新的形式與advert_id通過
redirect_to :action => :new, :advert_id => @form.advert_id
這引導我一個新的形式,我可以看到advert_id已通過 通過URL但窗體將不會提交和錯誤消息 不顯示。
可能一個好心告訴我如何順利通過 行動傳遞新的ID,並創建或我要去的地方錯了很多感謝
感謝你洙多! – ARTLoe
@ARTLoe很高興幫助某人。 – Lymuel