これは私のプロジェクトが数日間死んでしまったものです。
私は値の標準テーブルを持っています。このようなスケルトン何かを:jQueryを使ってテーブルにRailsフォームをロードする
<table><tbody><tr><td>Stuff!</td></tr></tbody></table>
私は、ユーザーがテーブルに新しい値を追加できるようにするjQueryのを使用してtbody
にインラインRailsの3形式をロードしようとしています。これは、コントローラの新しいアクションを取得するボタンで行われ、new.js.erbが呼び出され、フォームのレンダリングされた部分が単にテーブルの前に追加されます($("table tbody").prepend('<%= escape_javascript(render 'form') %>');
)。
フォーム部分自体がこのようなものになる:
<tr>
<td>
<%= form_for @model, :remote => true do |f| %>
</td>
<td>
<%= f.text_field :column %>
</td>
<td>
<%= f.submit "Add" %>
<% end %>
</td>
</tr>
を混乱が始まるのはここです:予想通りのWebkitブラウザやIEでこれは動作します!もちろん
<table>
<tbody>
<tr>
<td>
<form>
</form>
</td>
<td>
<input>
</td>
<td>
<input type="submit">
<td>
</tr>
<tr>The list of values</tr>
</tbody>
</table>
、フォームが開始され、入力が開始する前に、同じセル内に終わるということは、何かが間違って起こっている赤い旗を上げる必要があります:結果のHTMLは次のようなものになります。しかし、フォームは依然として提出し、完全に別の方法で動作します。
Firefoxでは、これは当てはまりません。フォームは、より多くのこのような何か(図示は他のすべてが同じであるため、先頭に追加行の内部だけのものです)レンダリング:
<td>
<form>
</form>
<td>
<input>
</td>
<td>
<input type="submit">
<td>
</td>
ここでの違いは、Webkitの/ IEのブラウザとは異なり、Firefoxはform
にすべてを投げることですタグのセル。また、フォームはまったく動作しません - 提出さえしません。リクエストは送信されません。
私の研究の中には、おそらく私がここで作っている巨大な間違いがあることを知っています。違いは、ブラウザーが、私が何か別の方法で放棄したものをレンダリングしようとしているという事実から来ます。私は、Railsフォームがテーブルとやり取りする方法とはほとんど関係がないことを理解しました。テーブル内の部分をレンダリングするだけで、ブラウザ間でHTMLが同じになります(フォームタグは他の入力しかし、私は<%end%>を間違った場所に置いている可能性があります。 jQueryを使用してレンダリングされた部分を前に置いているときに、何かが間違っています。おそらく、部分的にレンダリングするときに、テーブルタグを囲っていないために間違ってレンダリングされ、テーブルに挿入されて問題が発生します。
本当に、私は困惑しています。私はこれを広範囲に捜し求めてきましたが、接線的に関連する質問はありませんが、私の問題で本当に打撃を受けていないようです。
私はいくつかの非常に単純な間違いをしていると思いますが、それは何ですか?
ご迷惑をおかけして申し訳ございません。問題を可能な限り明確に説明していただければ幸いです。
ありがとうございました。問題は、各入力にセルがあって対応するテーブルヘッダーセルと整列しているといいでしょう。それが可能だと思いますか? –
フォーム用に別のテーブルを用意し、列の幅を他のものと一致させます。幅を修正したくない場合は、同じヘッダーを追加して非表示にすることができます。私は多分uiを別々に整理して、テーブルを使いこなす代わりにCSSを使ってフォームのスタイルを設定します。 – Heikki
ありがとうございました。 –