0

我有点惭愧,因为现在有两个多小时我不知道该怎么做。但我对 Rails 很陌生,所以请耐心等待:)

我有两组用户:海报和实干家然后有一个模型“作业”。作业由海报创建(与它们有belong_to 关系)。然后,实干者可以从未分配的池中选择分配并将它们分配给自己(这就是为什么分配也与实干者有belong_to关系的原因)。

在页面本身我现在有这个代码(在过去的一个小时里改变了 20 次):

<table class="table">
  <thead>
    <tr>
      <th>Title</th>
      <th>Assign to me</th>
    </tr>
  </thhead>      
  <tbody>
    <% @assignments.each do |assignment| %>
      <tr>
        <td><%= assignment.title %></td>
        <td>
           <%= link_to(edit_assignment_path(assignment), :doer => current_doer.id, confirm: 'Really take this assignment on?') do%>
             <i class="icon-folder-open", alt="assign"></i>
           <% end %> 
        </td>
      </tr>
    <% end %>
  </tbody>
</table>

在 AssignmentController 中使用此代码:

def edit
  @assignment = Assignment.find(params[:id])
  @doer = Doer.find(params[:doer])
  if @patient.assign(@doer)
    redirect_to dashboard_index_path, notice: 'Successfully assigned to you'
  else
    redirect_to dashboard_index_path, alert: 'Error while trying to assign to you'
  end
end

这在 Assignment.rb :

def assign(current_doer)
  if self.doer_id != nil then 
    false 
  else 
    self.doer_id << current_doer
    true
  end
end

如您所见,在此示例中我以 Doer 身份登录。而且我一生都无法弄清楚如何正确和干净地做到这一点!

我还尝试了 link_to 代码部分、assign 函数等的变体。目前我收到错误,@doer = Doer.find(params[:doer]) 无法搜索 Nil 的 id。我知道这意味着我并没有真正正确地发送 doer_id 参数,但我处于初学者知识端。

非常感谢你在这里帮助我。

问候, Lordylike

4

1 回答 1

0

你几乎是对的,当使用带有块的 link_to 时,它接受参数的方式会发生一些变化。像这样使用路径助手传递您的参数。

<%= link_to(edit_assignment_path(assignment, doer: current_doer.id), confirm: 'Really take this assignment on?') do %>
  <i class="icon-folder-open", alt="assign"></i>
<% end %>
于 2012-12-20T17:25:18.010 回答