2009-09-25 6 views
9

このような単純な質問をすることについてお詫びする必要があると思いますが、Railsガイドにはますます不満が増えています。彼らは私の質問に答えると確信していますが、彼らは私が実際にどのように理解するための十分な文脈を提供していません彼らは私に与えているものを適用します。私は間違った言葉やフレーズを探しているだけかもしれませんが、Googleは大いに助けません。免責事項を前に、私は先に進んで質問します:モデルデータをレールに取り込む

私はImageそのHABTM Albumを持っています。これをサポートするために、image_idalbum_idフィールド(他はありません)のalbums_imagesテーブルがあります。私の人生にとって、イメージフォームの部分をどのように埋め込むかを理解できないので、ユーザーは新しくアップロードされたイメージが属するアルバムを選択できます。

私はRailsを学んでいますので、私は本当に基本がほしいです。私は100種類の方法でこれを行うための素晴らしいプラグインがあると確信していますが、まず基本を学びそこから構築したいと思います。部分的に私のフォームはかなり教科書です:

<% form_for(@image, :html => { :multipart => true }) do |f| %> 
    # All the basics you'd expect to see. 
<% end %> 

私の最も最近の試みは、私が試した他のバリエーションよりも良く機能しないが、それは次のようになります。もう一度

<p> 
    <%= f.label :album_id %> 
    <%= f.select(:album_id, current_user.albums, :id, :name) -%> 
</p> 

、I私が求めている質問のシンプルさを認識し、私が見つけたものを読んだが、私はそれを完全な解決策にまとめることができなかった。それを行うには多くの方法があるようですが、それぞれについて真の議論、賛否両論、またはより大きな文脈でそれらを実際に使用する方法はありません。

ありがとうございました。

更新日:メモとコードの修正のためにいくつかのキーがあります。まず、画像とアルバムの間にHABTMの関係があります。いずれのモデルテーブルも、他方を直接参照するFKを有していない。次に、アルバムコレクションにはcurrent_user.albums(上記で修正)としてアクセスする必要があります。ユーザhas_manyアルバムとアルバムbelongs_toユーザ。

UPDATE:以下theIVの要請、現時点では、このコードで:

22: <p> 
23: <%= f.label :album_id %> 
24: <%= f.select(:album_id, current_user.albums.collect {|a| [a.name, a.id]}) -%> 
25: </p> 

私はこのエラーを取得する:

undefined method `album_id' for #<Image:0x1042ec110> 

私はライン24にエラーが発生します。

+0

エラーの種類を教えてください。または、開発ログの出力の一部を投稿しますか? – theIV

+0

それは事です、エラーは私がどのバリエーションを使用するかに依存します。しかし、しばしば、「album_id」に何らかの種類のマージエラーや欠落したメソッドエラーがありました。現時点では、このコードで: 22:\t

23:\t \t <%= f.label:album_id%> 24:\t \t <%= f.select(:album_id、current_user.albums.collect { | | [a.name、a.id]}) - %> 25:\t

私はこのエラーを取得する: #<画像のための「 未定義のメソッド 'album_id:0x1042ec110> 私はそれが役に立てば幸い。これは私が期待していたよりもはるかにイライラしています。 –

+0

申し訳ありませんが、コメントでコードブロックが許可されると仮定しました。元の投稿に更新を追加します。 –

答えて

6

をこれまで働いていた。この時点で

<%= f.label 'Albums' -%> 
<%= collection_select(:image, :album_ids, current_user.albums, :id, :name, {}, { :multiple => true }) -%> 

私は「作業」と言うとき、私は本当にを証明することができ、すべてのページがエラーなしでレンダリングし、私は、画像を編集するとき、適切なアルバムやアルバムが選択されていることです。私は、いろいろなソースからの "完全な"解決策を一緒にまとめるのがいかに難しいかということにもまだショックを受けています。

15

私は、select要素は、あなたが言ったように、それを行う方法の数が多いように見えるので、Railsのより混乱する側面の1つだと思います。

このお試しください:まあ、私はそれが最善の方法、Railsの方法や、率直に言って、でもエレガントな方法だとわからないんだけど、ここのようです私が使用したコードだ

<%= f.select(:album_id, @image.albums.all.collect {|a| [a.name, a.id]}) -%> 
+0

私は自分の構造に関していくつかの点を修正/強調しましたが、これは私のためには機能しませんでした。私がb/cにしなければならなかった変更によるものかもしれません。私は上記のいくつかの悪い情報を持っていました。私が今持っているものは '<%= f.select(:album_id、current_user.albums.collect {| a | [a.name、a.id]}) - %>'です。私も '.all' named_scopeで試しました。 –

関連する問題