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

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -