質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

解決済

2回答

619閲覧

メール送信用のactionを追加したいがルーティングを意図した通りに書けないです

pecchan

総合スコア587

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2021/05/24 01:55

編集2021/05/24 01:55

ruby on rails 6.1.0
初心者につき的外れな質問してるかもしれません。

会員へお知らせ作成と一斉送信を作りました。

お知らせの登録編集を実装し、一斉送信のactionとしてeamilアクションを追加しました。

ruby

1class Admin::AnnouncementsController < Admin::BaseController 2 def new 3 @announcement = Announcement.new 4 end 5 6 def create 7 @announcement = Announcement.new(announce_params) 8 if @announcement.save 9 flash[:success] = "メッセージを登録しました。" 10 redirect_to admin_root_path 11 else 12 render 'new' 13 end 14 end 15 16 def show 17 @announcement = Announcement.find(params[:id]) 18 end 19 20 def index 21 @announcements = Announcement.paginate(page: params[:page], per_page: 5) 22 end 23 24 def edit 25 @announcement = Announcement.find(params[:id]) 26 end 27 28 def update 29 @announcement = Announcement.find(params[:id]) 30 31 if @announcement.update(announce_params) 32 flash[:success] = "更新しました" 33 redirect_to admin_announcements_path 34 else 35 render 'edit' 36 end 37 end 38 39 def email 40 @announcement = Announcement.find(params[:id]) 41 #印刷 42 end 43 44 private 45 46 def announce_params 47 params.require(:announcement).permit(:title, :message) 48 end 49 50end 51

http://127.0.0.1:3000/admin/announcements/email/3
で印刷アクションを実行したいのですが、Routing Errorになりました。

No route matches [GET] "/admin/announcements/email/3"

config\routes.rb

ruby

1 namespace :admin do 2 resources :announcements 3 post 'announcements/email' => 'announcements#email' 4 5 end

rails routesで確認するとmailアクションは追加はされてるのですが、
POSTが衝突してるのが原因でしょうか?
イメージ説明

railsガイドを読んだのですがよく分かりませんでした。
https://railsguides.jp/routing.html

どうすればmailアクションが実行できるでしょうか?
先輩方アドバイスお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

resources :announcements do member do patch 'email' end end
<%= form_with model: @announcement, local: true, :url => email_admin_announcement_path do |f| %> <%= @announcement.id %> <%= f.submit '送信', class: 'btn btn-primary btn-block', data: { disable_with: t("sending") } %> <% end%>

投稿2021/05/24 02:27

pecchan

総合スコア587

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

http://127.0.0.1:3000/admin/announcements/email/3

で印刷アクションを実行したいのですが

明らかに、この形を受け取れるルーティングがありません。

投稿2021/05/24 01:57

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pecchan

2021/05/24 02:00

post 'announcements/email' => 'announcements#email' で指定したつもりでした・・・。 どのように記載するのが正しいでしょうか?
maisumakun

2021/05/24 02:01

> post 'announcements/email' => 'announcements#email' で指定したつもりでした・・・。 POSTとGETも違いますし、番号も受け取れません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問