将html表的td值传递到Rails控制器

时间:2019-03-15 05:25:14

标签: ruby-on-rails

在我的html中,我显示了来自两个表的一些数据。我为表格的每一行提供了一个编辑按钮。当我单击它时,它必须检查该名称是否存在于table1或table2中,并获取该特定名称的所有详细信息。

HTML:

<div class="col-md-12">
  <h5 style="text-align: center;">List of SNMP OIDs</h5>
  <table id="myPersonTable" class="table table-striped" >
    <thead>
      <tr>
        <th>Person Name</th>
        <th>Edit</th>
        <th>Delete</th>
      </tr>
    </thead>
    <tbody id="table_body">
      <%  @all_persons.each do |person|%>
        <tr>
          <td>
            <%= person['name'] %>
          </td>
          <td>
            <%= link_to '<button type="button" class="btn btn-info">Edit</button>'.html_safe, edit_oid_path(person['id'])%> 
          </td>
          <td>
            <%= form_tag(contoller: "configuration", action: "delete_person") do%>
              <%= hidden_field_tag(:person_id, person['id'])%>
              <%=submit_tag "Delete", class: "btn btn-danger", data: {confirm: "Are you sure?"}%>
            <% end %>
          </td>
        </tr>
      <% end %>
    </tbody>
  </table>
</div>

Rails控制器:

def edit
  person_f =  Person.find_by(name: params[:name])
  person_s= HardPerson.find_by(name: params[:name])
  if person_f.present?
    @person = Oid.find(params[:id])
  elsif person_s.present?
    @oid = HardPerson.find(params[:id])
  end
end

这是一个问题:我单击“编辑”按钮以获取来自person2的人名 ID = 1的表格。此编号同时存在于person1和person2表中。而不是从person2获取详细信息,而是检查person1表中的id,并从person1表获取id = 1个人详细信息的值

控制器params[:name]中的值正在为空。帮助我在Rails控制器中获得params[:name]

2 个答案:

答案 0 :(得分:0)

要在控制器中获取params[:name],请在路由中使用:param选项覆盖默认资源标识符:id

resources :people, param: :name

这将允许您使用:

Person.find_by(name: params[:name])

请记住,您可能需要覆盖相关模型的ActiveRecord::Base#to_param才能构建URL。

有关更多信息,请参见4.10 Overriding Named Route Parameters

答案 1 :(得分:0)

很难理解您的问题是什么,但是我会尽力的。您是否想将<%= person['name'] %>中的值视为params[:name]的内部编辑操作,对吗?只需将其作为附加参数传递给路径助手:

<%= link_to '<button type="button" class="btn btn-info">Edit</button>'.html_safe, 
  edit_oid_path(person['id'], name: person['name'])%>