0

2 時間以上前からやり方がわからないので、少し恥ずかしいです。しかし、私はRailsにかなり慣れていないので、我慢してください:)

投稿者と実行者の 2 つのユーザー グループがあり、「割り当て」というモデルがあります。課題は投稿者によって作成されます (投稿者との所属先関係があります)。次に、実行者は、割り当てられていないもののプールから割り当てを選択し、それらを自分自身に割り当てることができます (そのため、割り当ては実行者との属している関係もあります)。

ページ自体には、現時点で次のコードがあります (過去 1 時間で 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 パラメーターを正しく送信していないことを意味することはわかっていますが、初心者の知識の終わりです。

ここで私を助けてくれてありがとう。

ごきげんよう

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 に答える