基本上是一個用戶是項目主頁,他們點擊添加新的網站,該網站設置了這樣預設在控制器中的參數軌
<%= link_to 'Add Asset', new_website_path(:project_id => "#{@project.id}"), class: 'btn btn-md btn-danger' %>
,然後他們填寫了一些數據表單上。不過,我希望這樣,當他們提交該表單時,項目ID(來自他們剛纔的項目頁面)被保存在網站的project_id變量下,但出於某種原因,這不起作用。
class WebsitesController < ApplicationController
def new
@project = Project.find(params[:project_id])
@website = Website.new(:type => 'Website', :project_id => @project)
end
def create
@website = current_user.assets.build(website_params)
if @website.save
flash[:notice] = "Asset successfully added."
redirect_to(:controller => 'projects', :action => 'show', :id => @website.project_id)
else
render(:action => 'new')
end
end
private
def website_params
params.require(:website).permit(:id, :type,:url, :page_rank, :rev_company ,:social_pages)
end
end
有什麼缺失,爲什麼這不工作?當我登錄控制檯時,我添加的所有網站都有一個零的project_id。
當我去到我的瀏覽器的形式,這是地址:
http://localhost:3000/websites/new?project_id=1
而且,我認爲這是獲得正確的項目ID,因爲在形式我有着眼於項目ID的條件看它是否是類型的網站,如:
#views/websites/new.html.erb
<div class="col-md-5 col-md-offset-3">
<div class="panel panel-default newasset">
<div class="panel-heading">
<h3 class="panel-title ptd"><%= "New #{@project.type}" %></h3>
</div>
<div class='panel-body'>
<div class='form group'>
<%= simple_form_for(@website, html: {class: 'form-group' }) do |f| %>
<% if (@project.type == 'Website') %>
<div class="col-xs-4 col-xs-offset-3">
<%= f.input :title, label: 'Website Name' %>
<%= f.input :url %>
<%= f.input :rev_company, label: "Revenue Company" %>
<%= f.input :social_pages, label: "Number of Social Sites" %>
<%= f.input :page_rank %><br />
<div class="form-actions">
<%= f.button :submit, class: 'btn btn-primary' %>
</div>
<% else %>
You should not see this
<% end %>
<% end %>
</div>
</div>
</div>
</div>
嘿謝謝你的答案。我該把這個放在哪個方法中?新的或創建方法?這也會創建一個新的項目,每次我想建立一個資產?因爲我只希望它創建新網站並將它們添加到現有項目 – HarryLucas
這是用於新方法。 create方法將需要更改id,如另一個答案中所述的project_id。 – tebayoso