【发布时间】:2016-07-13 07:18:43
【问题描述】:
以前有人问过这个问题,我什至回答了right here。 但是随着升级到 1.1.2,这种方法不再有效。由于名称中的任何空格(例如“Super Cleaner”)现在都表示为“Super+Cleaner”,这是传递给查询的值,因此不会收到任何命中。这样做的正确方法是什么?我认为这与 Valim 在另一篇文章中回答的 Phoenix.Param 有关吗?问题归结为它被视为整数而不是字符串,我不知道为什么。
怎么样:http://localhost:4000/weapons/Super+Cleaner
应该如何:http://localhost:4000/weapons/Super%20Cleaner
编辑:更新以包含我的代码
HTML
<a class="secondary button" href="<%= weapon_path(@conn, :html_weapon_info, weapon.name) %>">Weapon Details</a>
路由器
get "/weapons/:weapon_name", WeaponController, :html_weapon_info
控制器
def html_weapon_info(conn, %{"weapon_name" => weapon_name}) do
weapon = Repo.get_by(Weapon, name: weapon_name)
ships = Weapon |> Weapon.get_ships(weapon_name) |> Repo.all
render(conn, "weapon_show.html", weapon: weapon, ships: ships)
end
我的问题是武器名称现在的值为“Super+Cleaner”,使得查询没有返回结果。
【问题讨论】: