2012-07-02 52 views
0

這是一個菜鳥問題!ActiveModel vs ActionView在Rails中

我如何保存模型操作,一旦當我嘗試在控制器中保存的PARAMS [:行動]時採取行動控制..

這裏是我的控制器:

def viewTask() 
    @id = params[:id] 
    @task = Task.find(@id) 
    @status = Status.find(@task.status_id) 
    @actions = Action.where("task_id = #{@id}") 
    @action = Action.new 


    if params[:action] 
    @action = Action.new(:message => params[:action], :task_id => @id) 
    @action.save 
    end 
end 

這是我的觀點:

<%= form_for :action do |a| %> 
    <%= a.text_area :message, :cols => 10, :rows => 5 %> 
    <%= a.submit 'ok', :class=> "btn" %> 
<% end %> 

謝謝大家。

+2

對不起,我聽不太懂這一點: 如何保存爲模型的作用,曾經當嘗試在控制器中保存的PARAMS [:行動]是由動作控制器令牌.. –

+0

我不明白你的問題。 – iblue

+0

我如何保存爲模型的作用,一旦當我嘗試在控制器中保存的PARAMS [:行動]是由動作控制器已經令牌.. –

回答

0

這個答案更像是一個評論,但它是很難理解的,問題是什麼,所以我決定把這個作爲一個答案。


來吧,費爾南多,我們怎麼能知道你想做什麼?表單應該提交哪些操作?你能告訴我們你的routes.rb,所以我們知道,行動表單可以如何提交給你的控制器動作。也許,爲避免在rails中命名約定的問題,您應該將Action模型和控制器重命名爲MissionActivity

什麼都要你params哈希樣子?因爲總會有一個params [:action],通常情況下是createupdate

此外,請儘量使用內置的軌道的方法,如:

# should be a POST method (am I right?) 
# why do you call it viewTask? 

def viewTask 
    @task = Task.find(params[:id]) 
    # you'd better avoid extra DB-calls 
    # @status = @task.status 
    # @activities = @task.actions 

    # you can load this with the @task-query by including or joining them 
    # if you need the @status and @activities models you could do 
    # @task = Task.find(params[:id], :include => [:task, :activities]) 

    # if you only need the joined objects you should use 
    @task = Task.find(params[:id], :joins => [:task, :activities]) 

    @activity = Activity.new 

    if params[:activity] 
    @activity = @task.activities.build(params[:activity]) 
    @activity.save 
    end 
end 

在代碼中,我假設,你是任務模型看起來是這樣的:

class Task < ActiveRecord::Base 
    has_many  :activities 
    belongs_to :status  # so it has a field called :status_id 
    ..... 
end 
+0

對不起我那可憐的解釋..謝謝,我會重新命名模型操作..謝謝 –

+0

沒關係 - 開始鍛鍊,你會增長:D –

+0

thx糾正我的答案的代碼(壞,壞的複製和粘貼):D所有的工作? –

相關問題