Update user input to another table without using html form

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

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.
Any suggestions? Thanks for any response.

@student = @student.find params[:id]
This makes no sense to me…

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
Are you trying to say that you want to use a get request instead of a
post request? In a perfect world every request that changes the server
state is a post request, but if you want to use a get request just put
additional parameters in the url.

I suggest you make this work with a regular html view before worrying
about the external front end.

Sharagoz – wrote:

@student = @student.find params[:id]
This makes no sense to me…

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
Are you trying to say that you want to use a get request instead of a
post request? In a perfect world every request that changes the server
state is a post request, but if you want to use a get request just put
additional parameters in the url.

What do you mean by put additional parameters in the url? Thanks for the
response though.

Matt J. wrote:

On Feb 19, 8:16�pm, John M. [email protected] wrote:

in the studentfails table).
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 J.

The form will be in the other application used as a front end, not in
rails. So the user will put data in that form but I want it to update to
another table, not the students table even though we capture the data in
the students controller.

On Feb 19, 8:16 pm, John M. [email protected] wrote:

in the studentfails table).
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 J.

On Feb 21, 4:54 pm, John M. [email protected] wrote:

The form will be in the other application used as a front end, not in
rails. So the user will put data in that form but I want it to update to
another table, not the students table even though we capture the data in
the students controller.

Doesn’t make any difference - SomeModel.create(…) will work just as
well in one controller as in another.

Fred

Frederick C. wrote:

On Feb 21, 4:54�pm, John M. [email protected] wrote:

The form will be in the other application used as a front end, not in
rails. So the user will put data in that form but I want it to update to
another table, not the students table even though we capture the data in
the students controller.

Doesn’t make any difference - SomeModel.create(…) will work just as
well in one controller as in another.

Fred

Even if it’s a flash (adobe flex) form and not html form? The
communication is done purely through http requests. For example, user
clicks flash button, this triggers http put request, method is called in
rails, data captured through the params function in rails, and thus data
is subsequently updated to database. However, it’s not like I can stick
an attribute created using attr_accessor in that flash form.

Even if it’s a flash (adobe flex) form and not html form?
A http request is a http request regardless of where it is submitted
from. Start by making this work with a rails view, and then worry about
the flash front end later. When you know what the http request actually
needs to look like, then its easier drop the rails view and implement an
external front end to replace it.

On Sun, Feb 21, 2010 at 12:32 PM, John M. [email protected]
wrote:

Frederick C. wrote:

Doesn’t make any difference - SomeModel.create(…) will work just as
well in one controller as in another.

Even if it’s a flash (adobe flex) form and not html form? The
communication is done purely through http requests. For example, user
clicks flash button, this triggers http put request, method is called in
rails, data captured through the params function in rails, and thus data
is subsequently updated to database.

Yes, that’s the way the web works :slight_smile:

However, it’s not like I can stick an attribute created using attr_accessor
in that flash form.

?? Either you’re passing the data you need to your controller via that
request or you’re not. Which is it?


Hassan S. ------------------------ [email protected]
twitter: @hassan