こんにちは、私はレールにかなり慣れていないため、新しいポスト メソッドを追加しようとして問題が発生しています。
ユーザーを有効にする新しいメソッドを作成したいと思います。
したがって、次のメソッドを持つようにユーザーコントローラーを変更しました
def enable
if (!@user.enabled)
@user.enabled = true;
if @user.save
UserMailer.send_enabled_message(@user).deliver
redirect_to users_url, notice: 'User was successfully enabled.'
else
redirect_to users_url, notice: 'Could not enable user.'
end
else
redirect_to users_url, notice: 'Could not enable user.'
end
終わり
そして、ルートに以下を追加しました。
match 'users/:id' => 'users#enable', :via => 'post', :action => :enable
そして、ユーザーのテーブルを表示する私のビューに以下を追加しました:
<td><%= link_to 'Enable', user, method: :enable, data: { confirm: 'Are you sure?' } %></td>
これはすべて機能しているようですが、ログインできなくなったため、ルートがログイン投稿を上書きしたと思います。新しいフォームを作成する必要がありますか?それとも、このように簡単に送信できますか?
また、link_to を使用しているときに同じ行に沿って、次のようなことを行うにはどうすればよいですか:メソッド<%= link_to 'enable', enable_user(user) %>
を作成する方法/場所はenable_user
?
GoGoCarl に感謝します。ルートをこれに変更する必要がありました:
resources :users do
post 'enable', on: :member
end
そしてこれに対する私の見解:
<td><%= link_to 'Enable', enable_user_path(user), method: :enable, data: { confirm: 'Are you sure?' } %></td>