0

这是一个菜鸟问题!

如何保存模型动作,一旦我尝试保存在控制器中,参数 [:action] 被动作控制器采用..

这是我的控制器:

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 %>

谢谢大家。

4

1 回答 1

0

这个答案更像是一个评论,但是很难理解这个问题是关于什么的,所以我决定把这个作为答案。


拜托,费尔南多,我们怎么知道你想做什么?表单应该提交到什么操作?您能否向我们展示您的 routes.rb,以便我们知道操作表单如何提交给您的控制器操作。也许,为了避免 Rails 中的命名约定问题,您应该将ActionModel 和 Controller重命名为Missionor之类的名称Activity

你的params哈希应该是什么样的?因为总会有一个 params[:action],在表单的情况下通常是createor update

此外,请尝试使用内置的 rails 方法,例如:

# 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
于 2012-07-02T21:49:12.133 回答