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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

867閲覧

updateができない!(Routing Error)

chikaraueta

総合スコア16

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/11/19 09:08

編集2018/11/21 07:01

userとprojectとその中間テーブルのuser_projectがあります。
userカラムの中にdegree_of_reliabilityという数字(integer)があるのですが、「参加者を評価する」というボタンを押すとその数字が1上がるというコードを書きたいのですがうまくいきません。
わかる人がいましたら教えていただきたいです。

実際のコード

routes.rb

Rails.application.routes.draw do devise_for :users root to: "top#index" resources :users, only: [:show, :edit, :update] resources :project, only: [:new, :create, :show] do resources :join, only: [:create] resources :degree_of_reliability, only: [:update] end end

project_comtroller.rb

class ProjectController < ApplicationController def new @project = Project.new end def create @projectcreate = Project.create(project_params) UserProject.create(user_id: current_user.id, project_id: @projectcreate.id) end def show @project = Project.find(params[:id]) @projects = Project.all.order("id DESC") end private def project_params params.require(:project).permit(:title, :details, :photo, :required_reliability).merge(user_id: current_user.id, organizer: current_user.name) end end

degree_of_reliability_comtroller.rb

class RequiredReliabilityController < ApplicationController def edit @project = Project.find(params[:project_id]) participant = @project.user.id @user = User.where(id: params[:participant]) new_reliability = @user.degree_of_reliability + 1 @user.update(degree_of_reliability: new_reliability) end end

project/show.html.erb

<div class="row"> <中略> <div class=""> <p class="btn white"><%= link_to "参加者を評価する", project_degree_of_reliability_path %></p> </div> </div>

degree_of_reliability/update.html.erb

<div> <p>評価しました</p> <a class="btn" href="/">ホームに戻る</a> </div>

エラー画面

イメージ説明

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

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

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

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

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

guest

回答2

0

ベストアンサー

project_degree_of_reliability_pathに親リソースであるprojectのIDが割り振られていないからです。

ruby

1project_degree_of_reliability_path(project_id: project.id)

のような形でそのprojectレコードのIDを引数で指定してやれば良いです。

投稿2018/11/21 07:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

actionが一致していないように思えますが、
project_degree_of_reliability_path ではなく、edit_degree_of_reliability_path ではないんでしょうか?
参考リンク貼っておきます。
https://qiita.com/srkw___/items/2f65ef53e06e86930faa

投稿2018/11/20 06:13

oh_rusty_nail

総合スコア319

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

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

chikaraueta

2018/11/21 07:07

project_join_index POST /project/:project_id/join(.:format) join#create project_degree_of_reliability PATCH /project/:project_id/degree_of_reliability/:id(.:format) degree_of_reliability#update PUT /project/:project_id/degree_of_reliability/:id(.:format) degree_of_reliability#update project_index POST /project(.:format) project#create new_project GET /project/new(.:format) project#new project GET /project/:id(.:format) project#show rake routesの結果ですがこうなっているのでおそらく間違ってはないと思うのですが、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問