2012-06-10 79 views
0

我正嘗試創建一個學校模型,用戶可以使用school_name(string),description(string)和created_by_user(integer)的屬性創建該模型。form_for Ruby on Rails應用

用戶應該只能訪問和更改名稱和描述參數,created_by_user字段應自動設置爲創建它的用戶的ID號。

這是我的新學校形式:

<h1>Open a New School</h1> 

<%= form_for(@school) do |f| %> 
<%= render 'shared/error_messages', :object => f.object %> 
<%= render 'fields', :f => f %> 
<div class="actions"> 
<%= f.submit "Create School!" %> 
</div> 

,這是「田」部分

<div class="field"> 
    <%= f.label :school_name %><br /> 
    <%= f.text_field :school_name %> 
</div> 
<div class="field"> 
<%= f.label :description %><br /> 
<%= f.text_area :description, :size => "45x10" %> 
</div> 

我能在「田」加​​分,或任何地方否則,這樣當用戶創建一所新學校時,他們的ID會自動設置爲created_by_user值?

謝謝

+0

您是否定義了諸如current_user之類的方法來確定當前用戶是誰? – cdesrosiers

回答

1

你會想在你的控制器而不是你的視圖中定義這個。例如:

class SchoolsController < ApplicationController 

    def create 
    @school = School.new(params[:school]) 
    @school.created_by_user = current_user 
    if @school.save 
     redirect_to @school, notice: "School Created" 
    else 
     render :new 
    end 
    end 
end 
+1

+1。如果您在視圖中設置了'created_by_user',任何人都可以在提交表單之前更改它的值。將這個邏輯轉移到控制器是正確的選擇。 – Substantial

+0

非常感謝您的幫助! –

+0

@dannyp如果這回答你的問題,你應該將它標記爲接受 –