2011-12-11 44 views
3

我想我採取了錯誤的做法,並試圖找到網絡上的最佳方法,但迄今沒有運氣。形式中的額外變量 - Rails

我有一個項目模型,它有很多消息和用戶。這些消息屬於項目和用戶(如下所示)。所以我需要將項目ID和用戶ID都傳遞給消息表單。我知道這應該是相當簡單的,但我顯然搞砸了。不知道在這個階段使用http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-hidden_field_tag是否也是最好的想法。

任何幫助都會很棒。

項目模型:

class Project < ActiveRecord::Base 
    belongs_to :user 
    has_many :users 
    has_many :messages, :dependent => :destroy 
end 

用戶模型:

class User < ActiveRecord::Base 
attr_accessor :password 
attr_accessible :first_name, :last_name, :username, :email, :password, :password_confirmation 

has_many :projects 
belongs_to :projects 
has_many :messages 
end 

消息模型:

class Message < ActiveRecord::Base 
    attr_accessible :title, :message 
    belongs_to :project 
    validates :title, :presence => true 
    validates :message, :presence => true 
end 

項目顯示:

def show 
    @project = Project.find(params[:id]) 
    @title = @project.title 
    @curent_user = current_user 
    @message = Message.new  
    begin 
     @messages = @project.messages 
    rescue ActiveRecord::RecordNotFound  
    end 
    end 

/shared/_message.html.erb

<%= form_for @message do |f| %> 
<%= f.label :title %>: 
<%= f.text_field :title %><br> 

<%= f.label :message %> 
<%= f.text_area :message %> 

<%= f.submit %> 

    <% end %> 

信息創建行動

def create 
    @message = @project.messages.build(params[:message]) 
    if @message.save 
    flash[:success] = "Message created!" 
    redirect_to root_path 
    else 
    render 'pages/home' 
    end 
end 

欣賞你的時間,只是試圖找出所以它傳入我的USER_ID/PROJECT_ID如何轉移到從外地在消息創建。

回答

1

在控制器中設置project_id/user_id,以便在提交表單時不能由最終用戶修改。

由於您在消息控制器創建操作中使用@project.messages.build,應自動設置project_id。 然後,您可以使用@ message.user = @current_user設置用戶