nested forms - Rails 4 - setting associated foreign key value -
i have model called project , called invite.
the associations are:
project
has_many :invites
invite
belongs_to :project
i want allow users create projects send invites other users join them in working on project.
i have form create invites follows:
<%= simple_form_for(@invite, :url => invites_path) |f| %> <%= f.hidden_field :recipient_id, :value => get_recipient_id %> <%#= f.hidden_field :project_id, :value => current_user.profile.project_id %> <%= f.hidden_field :project_id, :value => @invite.project_id %> <%= f.label :email %> <%= f.email_field :email %> <!-- field should use :date_picker- isnt working --> <%= f.input :expiry, :as => :date, :label => "when need response invitation?" %> <%#= f.input :expiry, :as => :date_picker, :label => "when need response invitation?" %> <%= f.submit 'send', :class=>"formsubmit" %> <% end %>
in above form, i'm trying set project_id value.
in invites controller, have:
class invitescontroller < applicationcontroller before_action :get_project def index @invites = @project.invites end def new # @invite = invite.new @invite = @project.invites.build end def create @invite = invite.new(invite_params) @invite.sender_id = current_user.profile.id # @project = project.find(params[:project_id]) if @invite.save #send existing user email invitation join project team invitemailer.existing_user_invite(@invite).deliver_later format.html { redirect_to @project } @invite.recipient.project.push(@invite.project) else @invite.recipient.project.push(@invite.project) invitemailer.new_user_invite(@invite, new_user_registration_path(:invite_token => @invite.token)).deliver end # oh no, creating new invitation failed end private # use callbacks share common setup or constraints between actions. def set_invite @invite = invite.find(params[:id]) end def get_project @project = project.find(params[:project_id]) end # never trust parameters scary internet, allow white list through. def invite_params params[:invite].permit(:email, :project_id, :recipient_id) end end
i thought get_project before action project. instead, error says:
undefined method `project_id' #<profile:0x007fa179509b60> did mean? project_ids project_ids= projects object_id
the error message points hidden field in form project_id.
can see i'm going wrong?
the problem statement current_user.profile.project_id
in 1 of hidden form fields.
(the error message points code don't know why have commented line in post)
the error says profile
not have project_id
, user can have many projects. if want access project_id
, can this.
<%= f.hidden_field :project_id, value: @project.id %>
@project
accessible controller through get_project
method.
Comments
Post a Comment