【问题标题】:ActiveModel vs ActionView in RailsRails 中的 ActiveModel 与 ActionView
【发布时间】:2012-07-02 17:55:41
【问题描述】:

这是一个菜鸟问题!

如何保存模型动作,一旦我尝试在控制器中保存,params[: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 %>

谢谢大家。

【问题讨论】:

  • 对不起,我很难理解这一点:如何保存模型动作,一旦尝试保存在控制器中,params[:action] 是动作控制器的标记..
  • 我不明白你的问题。
  • 如何保存模型动作,一旦我尝试保存在控制器中,params[:action] 已经被动作控制器标记..

标签: ruby-on-rails ruby view controller action


【解决方案1】:

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


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

您的params 哈希应该是什么样的?因为总会有一个 params[:action],如果是表单,通常是create 或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

【讨论】:

  • 对不起,我的解释很糟糕..谢谢我将模型重命名为 Action..谢谢
  • 感谢纠正我的答案代码(错误、错误的复制和粘贴):D 一切都解决了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多