私は書籍レビュー/オンラインブックグループアプリを作成しています。表示するレビューを判断するための条件付きロジックを使用した書籍のレビュー
個々の書籍の表示ページで、レビュー、スポイラーまたはすべてのレビューを表示するかどうかをユーザーに決定させたいと思います。したがって、ページが読み込まれると、本の主要情報と、3つのボタン:See Reviews
,See Spoilers
,See All
が表示されます。
これは完全に簡単な作業でなければならないようです。 JSとjQueryを使用していた場合は、すべての要素を非表示にし、ボタンがオブジェクト・スポイラー・コードと一致する場合にjQueryがトリガーするようにしますが、これはRailsでは機能しません。
私はビューでjsをやってみました、私は自分のルートを介してロジックを実行しようとした、私はコントローラとヘルパーの機能を試して何も動作していない! Auuugghh!私はほぼ2日間この作業をしていましたが、コンピュータを壊したくなりました.6ヵ月後に初めてRailsに戻ったプロジェクトです。主にNodeで作業していましたが、Railsは錆びています。ここには関連するかもしれないコードがありますが、それはRailsなので、あちこちにあるので、ここにあるgithubレポを見るほうが簡単かもしれません。 https://github.com/nwimmer123/readit_rails
私はStackOverflowを読んでAPIDockを読んできましたが、これを理解することはできませんでした。どんな助けでも大歓迎です。
show.html.erb
<div class="container">
<%= button_to "Show Reviews", class: "btn btn-primary col-xs-2" %>
<%= button_to "Show Spoilers", class: "btn btn-primary col-xs-2" %>
<%= link_to "Show It All", controller: "books", method: "find_reviews", class: "btn btn-primary col-xs-2"%>
</div>
<% if @show_the_reviews == true %>
<div class="container">
<% @reviews.each do |review| %>
<% if review.book_id.to_s == params[:id].to_s %>
<div class="review">
<div>
<strong><%= review.user.name %></strong>
<% if review.spoiler == "1" %>
<span class="center-text">SPOILER</span>
<% end %>
</div>
<p><%= review.body %></p>
<button class="pull-right">Respond</button>
</div>
<% end %>
<% end %>
</div>
<% end %>
</div>
ブックコントローラ
def show
@user = current_user
@reviews = Review.all
end
private
def book_params
params.require(:book).permit(:title, :author, :genre, :image, :publication_date, :publisher, :synopsis)
end
def current_book
@book = Book.find_by_id(params[:id])
end
def find_reviews
puts "LOOK HERE!!!!!!"
@reviews.each do |review|
if review.book_id.to_s == params[:id].to_s
puts review.spoiler
end
end
@show_the_reviews = true
redirect_to book_path(@book.id)
end
end
私はそれをすべて表示]をクリックし、それはホームページにリダイレクトされます!
この質問はよく書かれていませんが、漠然としていますが、私は非常に迷惑で、より良い書き方を理解することはできません。私はここで基本戦略を探していると思う。
なぜあなたはjavascriptを使用できませんか?レールビューでjavascriptを使用することができます。 – toddmetheny
質問を編集する必要があります。私たちはあなたがそれがあまり書かれていない/あいまいであることを認め、それを修正しようと努力しているわけではないことは無礼です。誰もが読むことは、あなたを助けるためにそれを突き抜けなければなりません。 javascriptやJqueryでボタンを表示/非表示にして、それをレールで実装できます。あなたの問題はターボリンクである可能性があります。その場合は、レールターボリンクガイドの最後のセクションをお読みください。 – user3456978
toddmetheny - 私はjsを試したときに、その属性がレビューモデルの項目であるため、レビューがスポイラーであるかどうかを特定する方法を見つけられませんでした – nwimmer123