在我的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]
答案 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'])%>