From: Ravi Dtv on
I am trying to pass login and group_name from partial to controller, but
I dont get the values.

I see the following error:
RuntimeError in UsersController#addfriendtogroups

Called id for nil, which would mistakenly be 4 -- if you really wanted
the id of nil, use object_id

I tried in the console, where I get the result. But, in application I
cannot pass the values.



html page
-----------------

<% @groups.each do |user| %>
<%= render :partial => 'users/grouprow', :locals => {:user
=> user}%>

<% end %>

Partial
-----------
<tr>
<td class="people_profile">
<div class="clear_float_effect">
<div class="profile_block">

<p>
<span title="Click to edit" id="edit_location">

<%= link_to user.group_name %>

</span>
<a href="#" class="short_description_text btn"
id="edit_group_link"> <%= custom_button('Change') %> </a>



</p>
</div>

<div>
<% form_tag (:controller => "users" , :action => "addfriendtogroups")
do %>

Add friend:
<%= text_field_with_auto_complete :user, 'login', {:size =>
20}, {:tokens => ','} %>

<%= submit_tag "Add to group", :class =>
"submit_input_button rounded_corner" %>
<% end %>
</div>

</div>
</td>

</tr>



Controller
----------------

def addfriendtogroups
@f=User.find_by_login(params[:login]).id
@g=Group.find_by_group_name(params[:group_name]).id

@addfriend=GroupFriend.create(:user_id => current_user.id ,
:group_id => @g,:friend_id => @f)

respond_to do |format|

if @addfriend.save

flash[:notice] = "Friend added to group successfully."
format.html {redirect_to :back}

end

end
end
--
Posted via http://www.ruby-forum.com/.

From: Ravi Dtv on
Gregor Panek wrote:
> hi,
>
> pass your parameters to your partial like this:
> <%=render :partial => 'users/grouprow' ,:collection => @groups%>
>
>
> and when you want to call the parameters in your partial, you have to
> call it by the name of your partial so it will be something like this:
>
> grouprow.id
> grouprow.name
>
>
> Greg

Thanks Greg for the reply.

I can display the values in my partial.
My problem is I need to pass the values from my partial to the
controller.

I have a link, textbox and button in my partial.
The link holds groupname. the textbox holds friendname.
When I click Add button, the friend in the textbox should be added to
the group and insert into the table.
My def in controller

Controller
----------------

def addfriendtogroups
@f=User.find_by_login(params[:login]).id
@g=Group.find_by_group_name(params[:group_name]).id

@addfriend=GroupFriend.create(:user_id => current_user.id ,
:group_id => @g,:friend_id => @f)

respond_to do |format|

if @addfriend.save

flash[:notice] = "Friend added to group successfully."
format.html {redirect_to :back}

end

end
end


Please correct the def.

Thanks.
--
Posted via http://www.ruby-forum.com/.

From: Gregor Panek on
yeah that's because you pass only one parameter to the hidden_field_tag so you got this:
<input id="tags_list" name="tags_list" type="hidden" />

and your value is still nil, so you have to pass a second parameter to the hidden_field_tag to set the value:

<%=hidden_field_tag :group_name, "yourgroupname"%>
then you got this in html

<input id="token" name="token" type="hidden" value="yourgroupname" />
now you should get with params[:group_name] the value that you set

hope this works :)


> Gregor Panek wrote:
>> Hi,
>>
>> I think your problem is this line:
>> @g=Group.find_by_group_name(params[:group_name]).id
>>
>> you want to pass the params :group_name which are nil because in your
>> form you don't pass the :group_name to your controller:
>>
>> <% form_tag (:controller => "users" , :action => "addfriendtogroups")
>> do %>
>>
>> Add friend:
>> <%= text_field_with_auto_complete :user, 'login', {:size =>
>> 20}, {:tokens => ','} %>
>>
>> <%= submit_tag "Add to group", :class =>
>> "submit_input_button rounded_corner" %>
>> <% end %>
>>
>> So pass your :group_name trough a hidden field to your controller
>>
>> hidden_field
>>
>>
>> Am 19.05.2010 um 13:07 schrieb Ravi Dtv:
>
>
>
>
> I tried with a hidden field
> <% form_tag (:controller => "users" , :action => "addfriendtogroups") do
> %>
>
> Add friend:
> <%= text_field_with_auto_complete :user, 'login', {:size => 20},
> {:tokens => ','} %>
> <%= hidden_field_tag :group_name %>
> <%= submit_tag "Add to group", :class =>
> "submit_input_button rounded_corner" %>
> <% end %>
>
> but it still a nil value.
>
> The error :
>
>
>
> RuntimeError in UsersController#addfriendtogroups
>
> Called id for nil, which would mistakenly be 4 -- if you really wanted
> the id of nil, use object_id
>
>
> Request
>
> Parameters:
>
> {"group_name"=>"",
> "commit"=>"Add to group",
> "authenticity_token"=>"MHB8Ys8vccsGwbgnsb9r5T68oqirPpW6YUscfDojZhY=",
> "id"=>"testing",
> "user"=>{"login"=>"santosh"}}
>
> where 'testing' is current user login, santosh is friend, and my
> group_name is passing null value.
>
> --
> Posted via http://www.ruby-forum.com/.
>


From: Ravi Dtv on
Gregor Panek wrote:
> Hi,
>
> I think your problem is this line:
> @g=Group.find_by_group_name(params[:group_name]).id
>
> you want to pass the params :group_name which are nil because in your
> form you don't pass the :group_name to your controller:
>
> <% form_tag (:controller => "users" , :action => "addfriendtogroups")
> do %>
>
> Add friend:
> <%= text_field_with_auto_complete :user, 'login', {:size =>
> 20}, {:tokens => ','} %>
>
> <%= submit_tag "Add to group", :class =>
> "submit_input_button rounded_corner" %>
> <% end %>
>
> So pass your :group_name trough a hidden field to your controller
>
> hidden_field
>
>
> Am 19.05.2010 um 13:07 schrieb Ravi Dtv:




I tried with a hidden field
<% form_tag (:controller => "users" , :action => "addfriendtogroups") do
%>

Add friend:
<%= text_field_with_auto_complete :user, 'login', {:size => 20},
{:tokens => ','} %>
<%= hidden_field_tag :group_name %>
<%= submit_tag "Add to group", :class =>
"submit_input_button rounded_corner" %>
<% end %>

but it still a nil value.

The error :



RuntimeError in UsersController#addfriendtogroups

Called id for nil, which would mistakenly be 4 -- if you really wanted
the id of nil, use object_id


Request

Parameters:

{"group_name"=>"",
"commit"=>"Add to group",
"authenticity_token"=>"MHB8Ys8vccsGwbgnsb9r5T68oqirPpW6YUscfDojZhY=",
"id"=>"testing",
"user"=>{"login"=>"santosh"}}

where 'testing' is current user login, santosh is friend, and my
group_name is passing null value.

--
Posted via http://www.ruby-forum.com/.

From: Gregor Panek on
Hi,

I think your problem is this line:
@g=Group.find_by_group_name(params[:group_name]).id

you want to pass the params :group_name which are nil because in your form you don't pass the :group_name to your controller:

<% form_tag (:controller => "users" , :action => "addfriendtogroups")
do %>

Add friend:
<%= text_field_with_auto_complete :user, 'login', {:size =>
20}, {:tokens => ','} %>

<%= submit_tag "Add to group", :class =>
"submit_input_button rounded_corner" %>
<% end %>

So pass your :group_name trough a hidden field to your controller

hidden_field


Am 19.05.2010 um 13:07 schrieb Ravi Dtv:

> Gregor Panek wrote:
>> hi,
>>
>> pass your parameters to your partial like this:
>> <%=render :partial => 'users/grouprow' ,:collection => @groups%>
>>
>>
>> and when you want to call the parameters in your partial, you have to
>> call it by the name of your partial so it will be something like this:
>>
>> grouprow.id
>> grouprow.name
>>
>>
>> Greg
>
> Thanks Greg for the reply.
>
> I can display the values in my partial.
> My problem is I need to pass the values from my partial to the
> controller.
>
> I have a link, textbox and button in my partial.
> The link holds groupname. the textbox holds friendname.
> When I click Add button, the friend in the textbox should be added to
> the group and insert into the table.
> My def in controller
>
> Controller
> ----------------
>
> def addfriendtogroups
> @f=User.find_by_login(params[:login]).id
> @g=Group.find_by_group_name(params[:group_name]).id
>
> @addfriend=GroupFriend.create(:user_id => current_user.id ,
> :group_id => @g,:friend_id => @f)
>
> respond_to do |format|
>
> if @addfriend.save
>
> flash[:notice] = "Friend added to group successfully."
> format.html {redirect_to :back}
>
> end
>
> end
> end
>
>
> Please correct the def.
>
> Thanks.
> --
> Posted via http://www.ruby-forum.com/.
>