発行するProblem
モデルがあります。has_many
私の問題モデルのhas_many
問題。問題と問題の両方issue_problems
を持つ独自のモデルを持つ、両方の結合テーブルがあります。belongs_to
問題フォームで、select タグを使用して問題を問題に割り当てようとしています。(問題は既に作成されているため、問題に割り当てるだけです。) 試してみましたが、次のエラーが表示されます。
undefined method `reject' for "3":String
そしてスタックエラー:
app/controllers/problems_controller.rb:12:in `create'
注: 将来的には、複数の問題を割り当てて を利用できるようにすることを計画していますhas_many
が、今のところ、select で 1 つの問題を割り当てようとしています。
これが私のコードです:
私の問題モデル:
class Issue < ActiveRecord::Base
validates :name, :presence => true, :on => :create
has_many :issue_problems
has_many :problems, :through => :issue_problems
end
私の問題モデル:
class Problem < ActiveRecord::Base
validates :body, :presence => true
belongs_to :user
has_many :solutions
has_many :issue_problems
has_many :issues, :through => :issue_problems
accepts_nested_attributes_for :solutions, :issues
end
私の問題問題モデル:
class IssueProblem < ActiveRecord::Base
belongs_to :problem
belongs_to :issue
end
problems_controller での私の作成アクション:
def create
@problem = current_user.problems.new(params[:problem])
@solution = @problem.solutions.new(params[:problem][:solution])
respond_to do |format|
if @problem.save
@problem.issues << @problem.issue
@solution.save!
@solution.update_attributes(problem_id: @problem.id, user_id: current_user.id)
format.html { redirect_to(@problem, :notice => 'Problem was successfully created.') }
format.xml { render :xml => @problem, :status => :created, :location => @problem }
else
format.html { render :action => "new" }
format.xml { render :xml => @problem.errors, :status => :unprocessable_entity }
end
end
end
私のフォーム:
<%= form_for(@problem) do |f| %>
<%= f.hidden_field :published_at, :value => Time.now %>
<% if @problem.errors.any? %>
<div id="errorExplanation">
<p>Halt! Just so you know, you have to fix these <%= pluralize(@problem.errors.count, "error") %> before you can ask a question:</p>
<ul>
<% @problem.errors.full_messages.each do |msg| %>
<li>- <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="input-container">
<%= f.text_field :body, :placeholder => "What's your problem?" %>
</div>
<%= f.fields_for :solution do |f| %>
<%= f.hidden_field :published_at, :value => Time.now %>
<div class="input-container">
<%= f.text_field :body, :placeholder => "What solution do you propose?" %>
</div>
<% end %>
<%= f.select :issue_ids, Issue.all.collect {|x| [x.name, x.id]}, :prompt => "Select an issue" %>
<div id="button">
<%= f.submit 'Add', :class => 'button' %>
</div>
<% end %>