2013-12-20 50 views
0

Ruby on Rails 3使用user_id POST創建新表項

我有一個提交user_id的表單。我試圖讓POST使用user_id創建一個新的證書條目,並且使:參加屬性爲「是」。

發送的帖子是:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"xYUdeMjkxa1b0AhNTKJi9sDbSPo9MbwMMVPrV7cgpyo=", "certificate"=>[{"user_id"=>"1"}], "commit"=>"Submit"} 

這是我的編輯:

<%= form_for(@trained) do |f| %> 
    <%= select_tag "certificate[][user_id]", options_for_select(@current_users.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %> 
    <%= f.submit "Submit", class: "btn btn-large btn-primary" %> 
<% end %> 

這是我的模型:

class Certificate < ActiveRecord::Base 
    attr_accessible :attend, :pass, :user_id 

    validates :user_id, presence: true 
end 

這是我的控制器爲編輯()

def edit 
@trained = Certificate.new(params[:user_id]) 
end 

這是我創造certificates_controller()

def create 
    @trained = params[:certificate][:user_id] 
    params[:certificate][:attend] = "no" 
    params[:certificate][:pass] = "no" 
end 

我一直在嘗試不同的創建()方法,但很茫然。如何獲得POST以使用user_id創建新證書?我需要將sumbit按鈕分成兩個按鈕,一個用於添加,另一個用於刪除。

回答

0

你爲什麼select_tag 「證書[] [​​USER_ID]」 刪除多餘的[]從那裏

select_tag "certificate[user_id]" 

也在控制器

@trained = Certificate.new(params[:certificate]) 
params[:certificate][:attend] = "no" 
params[:certificate][:pass] = "no" 
@trained.save 
+0

你知道爲什麼我得到這個錯誤:模板是缺少 使用{:locale => [:en],:formats => [:html],:handlers => [:erb,:builder,:coffee]}缺少模板證書/ create,application/create。搜索位置:*「/ opt/RoR/reseller_connect/app/views」 – DDDD

+1

是的,當您執行創建操作時,它會查找該控制器在views /文件夾中使用create命名的文件,以便它可以向用戶返回響應。所以如果你想渲染任何其他文件,你可以使用渲染'file_name',或者如果你想重定向用戶到一些其他行動,你可以使用redirect_to標記:) –