2017-09-02 4 views
0

私はRailsを初めて使い、クリックしたイメージに応じてデータベースに値を送信するフォームを作成しようとしています。Railsは、フォームを送信する前にイメージがクリックされているかどうかを確認します。

私は5つの画像と送信ボタンを持っています。私は5つの画像をボタンクラスにすることを考えています。クリックするたびにArticle Controllerでアクションを実行し、その値を渡します。

たとえば、最初のイメージをクリックすると、@ article.title = "最初のイメージがクリックされました"というアクションが実行され、送信ボタンは@ article.saveの作成アクションを実行します。

私が試した:

<%= button_to "Submit Score", { :controller => "articles", :action => "submitScore"} %> 

が、いくつかの理由から、私はそれが記事のコントローラで作成し、アクションを実行しようとすると、同様にそれを保存しようとする画像を押したとき。私はいくつかのデータのバリデーションがあり、@ article.titleを空白にすることができないので、それを知っています。イメージボタンを押すとタイトルが空白にならないと言います。

これを行うにはどのような方法が最適ですか?

答えて

1

button_toは、formタグ全体を生成します。 formタグヘルパー内に含まれる値の属性を持つbuttonタグを使用してみてください:代わりにbutton_toヘルパーの

<%= form_for @article, articles_path do |f| %> 
    <%= f.text_field :title %> <!-- or hidden field? --> 

    <button type="submit" name="article[score]" value="1"> 
    <%= image_tag 'foobar.gif' %> 
    </button> 
<% end %> 

を。

+0

こんにちは、返信ありがとうございます。しかし、私は、データベースに直接送信する代わりに、ある種のトグル機能を望んでいます(つまり、ユーザーはさまざまなボタンを選択して押すことができ、決定したら送信ボタンを押してそれに応じてスコアを送信できます)。多くの研究がありますが、簡単な答えはないようです –

+0

いくつかのラジオボタンがおそらくあなたが探しているものです: '"ピッカーを隠すのにいくつかのCSSマジックが必要です。 –

+0

ありがとうございます!一緒に提案した方法を使用しましたいくつかのjQueryとCSSがあります。完璧に動作します。 –

1

各画像にチェックボックスをオーバーレイします。チェックボックスのラベルにイメージを囲むようにします。イメージをクリックするとチェックボックスがチェックされます。

フォームがコントローラに送信されると、コントローラはparamsをチェックして、どのイメージが選択されているかを確認し、必要な処理を行います(ユーザーが1つのイメージのみを選択するようにするにはラジオボタンを使用します)。行う。

+0

こんにちは、ラジオボタンも使用する予定です。しかし、ラジオボタンの外観を変更する方法はありますか?ラジオボタンの横の画像に画像タグを付けることができますが、実際にラジオボタンを実際の画像に変更して画像をクリックするだけです。お分かりでしょうが。 –

+0

はい、ラジオボタンを非表示にすることができます。次に、jsを使用して選択したイメージの周りにCSS境界線を適用します。 –

関連する問題