On Feb 19, 8:16 pm, John Merlino <li...@ruby-forum.com> wrote:
> Hey all,
>
> Let's say you are not going to use an html form. Rather the user will
> input data in a third-party application that will communicate with the
> rails controller through http requests, but serves as a replacement to
> the html. In other words, it's taking the place of front end.
>
> My question is can you update the attributes of another table, let's say
> studentfails table, from let's say a students controller (which has a
> students table) based on user input (the user input needs to be inserted
> in the studentfails table).
>
> I was hoping something like this, but this doesn't work:
>
> student.rb
> has_one :student_fail
> attr_accessor :student_fail_attribute
>
> def find_failing_student
> @student = @student.find params[:id]
> end
> def update_failing_student
>   @student = @student.find params[:id]
>   @student.build_student_fail params[:student][:student_fail_attribute]
> end

You don't appear to be *saving* the result from
@student.build_student_fail. Either you're looking for
create_student_fail (which saves the record) or something like:

def update_failing_student
  @student = Student.find(params[:id])
  @student_fail = @student.build_student_fail(params[:student]
[:student_fail_attribute])
  if @student_fail.save
    # save succeeded
  else
    # save failed - re-render form with errors
  end
end

> Even for this you have to put student_fail_attribute in the html. I'm
> hoping there's a way where you don't have to put anything in the html.

Not sure what you're looking for here: it's going to be hard to get a
field from the user without asking for it...

--Matt Jones

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to