0

我有兩個hidden_​​fields,user_idskill_idRuby on Rails的:隱藏字段值不插入到數據庫

<%= form_for @skill do |s| %> 
    <%= s.label :image, "Upload your skill" %> 
    <%= s.hidden_field :user_id, value: current_user.id %> 
    <%= s.hidden_field :skill_id, value: params[:id] %> 
    <%= s.file_field :image, multiple: true %> 
<% end %> 

在我的控制器我有這樣的:

def reviews 
    @skill = Skill.new 
end 

我能拿到skill_id的值存入我的數據庫,但我無法從user_id獲取值。在我的Rails控制檯中,我看到user_id正在通過「技能」,但未顯示在我的數據庫中。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"5+wxS929uxtt..", "skill"=>{"user_id"=>"7", "skill_id"=>"132", ...

我甚至檢查,看看是否我越來越有<%= current_user.id %>任何價值,對此我。

也許有人可以指導我調試這個問題的正確途徑。

感謝

+0

貴HTML正確顯示用戶ID?在生成的HTML上正確命名的表單字段? – fotanus

+0

它在你的params中顯示爲「user_id」=>「」'這就是爲什麼它沒有傳遞到數據庫。 –

+0

你的'user_id'是否設置在'attr_accessible'?此外,我假設'技能'屬於'用戶'。爲什麼不在你的控制器中使用'@ skill = current_user.skills.new'? – AbM

回答

1
<%= form_for @skill do |s| %> 
    <%= s.label :image, "Upload your skill" %> 
    <%= s.hidden_field :user_id, value: current_user.id %> 
    <%= s.hidden_field :skill_id, value: params[:id] %> 
    <%= s.file_field :image, multiple: true %> 
<% end %> 

這將去創建行動

所以你真正想要的是更新現有的一個,因爲你逝去的現有技能ID

def reviews 
    @skill = Skill.find params[:id] 
end 

現在你的表格可以用這個

<%= form_for @skill do |s| %> 
    <%= s.label :image, "Upload your skill" %> 
    <%= s.hidden_field :user_id, value: current_user.id %> 
    <%= s.file_field :image, multiple: true %> 
<% end %> 

現在轉到您的控制器中的更新操作。

def update 
    @skill = Skill.find params[:id] 
    @skill.update_attributes params[:skill] 
    redirect_to root_path # redirect to somewhere 
end 

試試這個。

+0

我不認爲你理解我的問題 – hellomello

+0

你的問題是你不能將user_id加入數據庫。您可以從上面的方式獲取user_id,然後將其保存到@skill。你有沒有像這樣的任何行Skill.create params [:skill] – sonnyhe2002

+0

不,我只有'.new'。如果我做.create,那麼我的其他領域不輸入,除非我把它放入創建(params ...) – hellomello

1

你需要創建控制器會是這個樣子:

def create 
    @skill = Skill.new(params[:skill]) 
    if @skill.save 
    # Handle a successful save. 
    else 
    render 'new' 
    end 
end 

您可能希望將def reviews控制器的名稱更改爲def new,也是新的路由添加到config/routes.rb

+0

這實際上讓我看着正確的方向......謝謝 – hellomello

相關問題