我有一個類似Twitter的應用程序,其中users
可以通過Connection
模型跟隨對方。在列出所有跟隨@user
的人列表中,我想要實施鏈接Follow Back
。我可以通過鏈接來做到這一點,還是必須使用表單來做到這一點,並只顯示按鈕?我如何設置這些表單的變更集?後退功能
幅/模型/ user.ex
defmodule MyApp.User do
use MyApp.Web, :model
use Arc.Ecto.Model
schema "users" do
field :last_name, :string
has_many :follower_connections, MyApp.Connection, foreign_key: :followee_id
has_many :followers, through: [:follower_connections, :follower]
[...]
幅/模型/ connection.ex
defmodule MyApp.Connection do
use MyApp.Web, :model
schema "connections" do
belongs_to :follower, MyApp.User
belongs_to :followee, MyApp.User
[...]
網/控制器/ user_controller.ex
[...]
def show(conn, %{"id" => id}) do
user =
Repo.get!(User, id)
|> Repo.preload([:followers, :follower_connections])
conn
|> assign(:user, user)
|> render("show.html")
end
[...]
網頁/模板/用戶/ show.html.eex
[...]
<table>
<tbody>
<%= for connection <- @user.follower_connections do %>
<tr>
<td><%= link connection.follower.last_name %></td>
<td>
<%= link ???????? "Follow Back" %>
</td>
</tr>
<% end %>
</tbody>
</table>
[...]
的link ????????
部分是我的問題。
不會使用連接#創建不是一個更RESTful方式? – wintermeyer
它完全會。在上面的代碼中需要改變的唯一方法是添加'method::post'。它會用你需要的按鈕生成表單。 'link「Follow back」,到:user_path(@conn,:follow_back,user_id,[]),方法:: post'。 (它需要JS被啓用)。 – tkowal