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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1756閲覧

Railsで「受付中」「解決済み」の表示を切り替えるボタンを作りたい

riamk

総合スコア47

Ruby

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/04/12 06:29

###前提・実現したいこと
Rails 4

練習で簡単なQ&Aサイトを作っていて、質問したユーザーが回答を「受付中」「解決済み」の項目を切り替えられるボタンのようなものを作りたいです。

現在 is_solved カラムをbooleanで作成してボタンを作成しようと試みています。

###発生している問題・エラーメッセージ
https://teratail.com/questions/72074
こちらを参考にquestions_controller.rb

def make_resolved @question == Question.find(params[:question_id]) if @question.update(is_solved: true) // end end

を記述しました。

ですが、ここからボタンをviewで表示させる部分で行き詰まってしまいました。
(どのように記述したらいいか分からない)

考え方としては、解決ボタンの部分テンプレートを作り、作成したテンプレートを呼び出せばいいのかなと思っているのですが具体的な記述が分からずいます。

_make_resolved.html.erb
ここの中身をどう記述すればいいかアドバイス頂けると嬉しいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

viewを晒してくださると話が早いのですが
editかshowが

ruby

1 2#略 3<div><%= link_to(@question.is_solved ? '解決済み':'受付中',{controller: :questions,action: :make_resolved}) %></div> 4

となっていたとすると

ruby

1 2#略 3<div id='ajax_button'><%= render :partial=>'make_resolved' ,locals=>{question: @question} %></div>

みたいにして
_make_resolved.html.erb

ruby

1<%= link_to(question.is_solved ? '解決済み':'受付中',{controller: :questions,action: :make_resolved}) %>

make_resolved.js.erb

ruby

1$("#ajax_button").children().remove(); 2$("#ajax_button").append('<%= escape_javascript render :partial => "make_resolved" ,locals: {question: @question},:layout => false %>');

とすれば動くと思います。

あっ忘れてた

ruby

1 if @question.update(is_solved: true) 2 // 3end 4 respond_to |format| 5 format.html{render :show} 6 format.js{} 7 end 8

controllerにrespond_toを入れてjsでのリクエストを許容する必要があります。

投稿2017/04/12 07:36

編集2017/04/12 09:28
moke

総合スコア2241

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

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

riamk

2017/04/12 08:57

ご回答ありがとうございます。 mokeさんのコードを参考に実装してみているのですが、現状なかなかうまく表示できずにいます。 問題点も変わってきているので、現在のviewも記載して新しく質問を立てさせて頂こうと思います。 もしお時間ありましたら、引き続きご教授頂けると嬉しいです。
moke

2017/04/12 09:18

questions がシンボルになってないのが問題かもしれません 一応修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問