11155
(-- --)
February 18, 2012, 6:26am
1
Rails 3.1.3
I am not sure Rails can do what I want to do.
I have a form for update like,
<%= form_for script, :remote => true do |f| %>
<%= f.hidden_field :video_id %>
<%= f.text_field :startp, :readonly => true %>
<%= f.text_field :text %>
<%= f.submit "update" %>
<% end %>
then, JavaScript (jQuery) inserts a value for 'startp' and for 'text' in
to the 'text_field' .
Of course, this set of values is already stored in DB. I want to update
it after editing it.
This form gives an error
undefined method `model_name' for NilClass:Class
whose I assume the cause is the nil object 'Script'. The object is not
properly passed.
I try to render this form like following.
<%= render :partial => "update_script",:locals => { :script =>
Script.find_by_startp(params[:startp])} %>
Since 'startp' is readonly and users should be able to edit only 'text',
I hoped to associate the 'text' with 'startp' rather than 'id' of
'script'.
Is there anyway to pass the obejct?
It is very difficult to explain the situation. But if someone can guess
the problem and have some suggestion, I would appreciate it.
Thanks .
soichi
In the “edit” controller, could you set:
def edit
…
startp = params[:startp] # or params[:script][:startp] ?
scripts = Script.find_all_by_startp(startp)
unless scripts.size == 1
@script = scripts.first # should really be ‘.single’
…
end
in the view
<%= render :partial => “update_script”,:locals => { :script => @script } %>
HTH (not entirely sure …),
Peter
11155
(-- --)
February 19, 2012, 1:56am
3
Thanks for your answer, although it does not quite work well.
The problem is that
':startp'
is defined in _new_script.html.erb, where a new (script) text along with
startp are defined.
<%= form_for script, :remote => true do |f| %>
<%= f.hidden_field :video_id %>
<%= f.text_field :startp, :readonly => true %> <=HERE!!!
<%= f.text_field :text %>
<%= f.submit "save" %>
<% end %>
If there is a way to grasp it somehow in the controller and pass it to
update action, it seems fine.
Any idea?
soichi
11155
(-- --)
February 19, 2012, 9:27am
4
<%= form_for script, :remote => true do |f| %>
Is 'script' in form_for above a local variable or a class? form_for
normally posts or puts to a class. It doesn't look right to me.
<%= form_for @script , :remote => true do |f| %>
or
<%= form_for :script, url: edit_script_path(), remote: true do |f| %>
hope it helps