在窗体视图中设置符号 - Ruby on Rails

时间:2010-09-06 15:00:16

标签: ruby-on-rails

我在尝试在表单视图中设置符号值时遇到问题。我的视图有几个实例变量被使用,@ task和@team,@ team是我遇到问题的一个。任务具有:需要设置的团队值。在这个视图中@team持有一个值,但是当我点击“创建”按钮并发帖时,@ team值会丢失,而@task不包含团队值。

以下是我正在处理的观点:

注意:“:team => @ task.team”行不起作用

<% form_for(@task) do |f| %>
  <%= f.error_messages %>
  <% @task.team = Team.find(@team) %>
  <p><%= @task.team.title%></p>
  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </p>
  <p>
    <%= f.label :hours %><br />
    <%= f.text_field :hours %>
  </p>

  <p>
    <%= f.label :team %><br />
    <% :team => @task.team %>
  </p>
  <p>
    <%= f.submit 'Create'%>
  </p>
<% end %>

在Create上调用的Post方法:

 def create
    @task = Task.new(params[:task])

    respond_to do |format|
      if @task.save
        format.html { redirect_to(@task, :notice => 'Task was successfully created.') }
        format.xml  { render :xml => @task, :status => :created, :location => @task }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @task.errors, :status => :unprocessable_entity }
      end
    end
  end

2 个答案:

答案 0 :(得分:0)

为什么不将它设置为隐藏字段?

<%= f.hidden_field :team, :value => @task.team %>

答案 1 :(得分:0)

当他提到你可以使用一个隐藏的表格字段时,@ Jordinl是对的。您还可以通过执行类似

的操作,将任务自动调整到控制器中的团队
@team = Team.find(params[:team])

然后

@team.tasks << Task.new(params[:task])

您需要在团队模型中为任务设置has_many关联

has_many :tasks

为此工作。每个任务也需要团队ID,但听起来你已经拥有了。