2

0.エッセンシャル

Railsのフォームと入力を使用して、多数のテキスト入力を1つの文字列属性にどのように連結しますか?

たとえば、「A」、「B」、「C」はそれぞれRails形式の入力であり、連結して次のように読み込む必要があります。:string_field => "ABC"

1.背景

ユーザーが自分でクロスワードパズルを作れるアプリケーションを作っています。パズルは私のCrosswordPuzzleクラスのメンバーであり、:letters属性(文字列)がパズルの文字と黒のスペースのレイアウトを記述します。

たとえば、次のような3x3パズル...

FOO
O■U
BAR

...の:letters属性が必要です"FOOO_UBAR"(文字列は、左から右、上から下に読み取られるパズルを表します)。

2.問題

ユーザーは、最初にパズルのサイズ(row x col)を指定してパズルを作成します。これにより、そのサイズの空白のパズルが作成され、各セルは空白のHTML入力要素になります。次に、ユーザーは空白のセルに適切な文字を入力して、パズルを作成できます。

方法がわからないのは、これらの個別の1文字の入力をすべて取得し:letters、編集フォームを送信するときにRailsに解釈させるか、パズルの1つの属性に変更させることです。また、パズルはセルの数が異なるさまざまなサイズである可能性があるため、100〜600の入力要素を単一の100〜600文字の文字列に読み込むことができるように、答えをスケーラブルにする必要があります。

どんな助けでも大歓迎です。

PSこれはStackOverflowでの私の最初の投稿なので、間違いを犯した場合は事前にお詫び申し上げます。(私は以前に同様のトピックがカバーされているかどうかを徹底的にチェックしましたが、それらがカバーされていないか、用語に慣れていないためにそれらを認識できません)

4

1 に答える 1

1

各テキスト入力がどこのような名前を持つようにフォームを構成しますcell[?]か?ゼロベースの配列インデックスです。したがってcell[0]、、cell[1]など。Railsは、それらすべてをcell配列となる単一のパラメータエントリに変換します。次に、それらを結合します。

縄跳び...こんな感じ。

1.8.7 > a = []
 => [] 
1.8.7 > a[0] = 'f'
 => "f" 
1.8.7 > a[1] = 'o'
 => "o" 
1.8.7 > a[2] = 'o'
 => "o" 
1.8.7 > a[3] = 'o'
 => "o" 
1.8.7 > a
 => ["f", "o", "o", "o"] 
1.8.7 > a.join
 => "fooo" 
1.8.7 > 

または..同じことを行いますが、クライアント側でjavascriptを使用して、結果を非表示の「文字」フィールドに詰め込むと、Railsは何もする必要がなくなります。

于 2013-01-13T18:18:50.923 に答える