1

足場を介して作成され、「表示」機能を備えた単純なコントローラーがあります。

足場を通して作成されたビューでは、特定の条件でのみ表示される画像があります。

コントローラで条件を設定または評価して、ビューに送信したい。それを行う方法や、これが正しいアプローチであるかどうかはわかりません。

4

2 に答える 2

1

この状態は通常、erbまたはhamlを使用してビューファイルで処理する必要があります。条件で質問を更新すると、それを反映するように回答を更新する方法がわかります。今のところ、一般的な条件を使用します。

オブジェクトが紹介されている場合にのみ画像を表示したいとします。オブジェクトにフラグ(1,0)として機能する注目のフィールドがあると想像してみましょう。

このオブジェクトがArticleである場合、ビューファイルで条件を確認できます。コントローラはモデルから記事を取得します。

-# articles_controller show action 
@article = Article.find(params[:id])

..

-# views/articles/show.html.erb
<% if @article.featured? %>
  // show image here
<% end %>

これは必ずしも正しいとは限らない条件の例であることを忘れないでください。それは私の最初のアプローチを説明するためだけのものです。

ビューファイル内から簡単に管理できる場合は、ロジックをjavascriptに配置するため、この条件に応じてjavascriptを使用して非表示/表示することはお勧めしません。

条件が複雑な場合は、それをモデルに移動して、次のように実行します。

if @article.some_complex_condition?

..コントローラーファイルにその複雑な条件を含めるのではなく。これにより、特定のコントローラーから離れた場所で条件を再利用でき、テストが容易になります。

于 2012-06-19T04:04:48.607 に答える
0

特定の条件に基づいて画像を表示および非表示にするだけの場合は、JQueryを使用して行うことができます。ビュー中心のコントローラーには何も入れないでください。

'show'にあるデータ要素のIDを取得して、JavaScriptに渡すこともできます。

JQueryには、あなたに役立つメソッドがshow()ありhide()ます。これがhideメソッドに関するドキュメントです:http: //api.jquery.com/hide/

基本的に、画像に特定のIDがある場合は、次のようにします。

$(document).ready(function() {
  $("#myImage").hide();

  if (some_condition === true) {
    $("#myImage").show();
  }
});  

そのコードをファイルに入れることができapplication.jsます。

ボタンで表示および非表示にする方法を示す簡単なJsFiddleを作成しました:http: //jsfiddle.net/phillipkregg/92RDS/

もちろん、コードはあなたがやろうとしていることによって異なるかもしれません。

'show'ビューでオブジェクトの'id'を取得する必要がある場合は、次のようにshowビューの下部にスクリプトタグを配置できます。

<script type="text/javascript">
  var my_show_object = <%= @some_object.id %>  //this will be the specific id of whatever the object is that you passed from the controller
  alert(my_show_object);  //this helps with debugging to see if you have the right id
</script>

id以外のものが必要で、Railsオブジェクト全体を取得してJavascriptとして表現したい場合は、Railsの「show」ビューの下部でこれを実行してください。

 <script type="text/javascript">               
    var my_object = <%= @your_rails_object.to_json %>;     
    console.log(my_object); //This code allows you to look in the console and see exactly what your object looks like.
 </script>

最後のものと同じよう@your_rails_objectに、コントローラーのショービューにある変数です。これにより、jsonオブジェクトとして返されるため、IDまたはそれが持つすべてのプロパティを取得できます。

また、Railsを学んでいるだけの場合は、次のオンラインブックをお勧めします:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

それが私がRailsを学んだ方法です-本は素晴らしく無料です。

于 2012-06-19T01:02:56.310 に答える