I have a model ("Ups") and a corresponding controller ("UpsController"). The Ups model has a link to my "channels" toble through channel_id Everything I am going to do in the given views for Ups have to do with using those ups from a selected channel. Thus, I am putting a partial at the top of the views, with a select box to choose the channels: <div id="uplognavlist"> <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action =>"newchannel", :controller =>"ups"} do |f| %> <%= f.label :channel_id %> <%= select("channel", "channel_id", Channel.find(:all, :order => ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]}, {:include_blank => true}) %> <%= f.submit "Change" , :class=>''button'' %> <% end %> <%= links_for_uplog %> </div> My question is, within my UpsController.newchannel(), how do I access the calue of the channel_id that has been selected in the form submission? Incidentally, if you look at the erb code I put above, there is a line feed that gets inserted after the submit button, before the next section " links_for_uplog " within the div. How can I not have that? Thanks, Janna
Hi Janna, First, you shouldn''t be calling Channel.find(:all, :order => ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} I''d add a named scope to the Channel model like so: named_scope :not_deleted, :conditions => {:deleted => false }, :order => ''channel ASC'' And then in the controller: @channels = Channel.not_deleted Then in your view: <%= f.select :channel_id, @channels %> The standard here would be to create the new Ups in a method called create. By using form_for on a new record rails will automatically know to post to an action called create so, unless you have a good reason not to, I''d recommend calling your controller method "create" and letting Rails behave the way it wants to. which ''line feed'' do you want to remove? Gavin http://handyrailstips.com On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:> I have a model ("Ups") and a corresponding controller > ("UpsController"). The Ups model has a link to my "channels" toble > through channel_id > > Everything I am going to do in the given views for Ups have to do with > using those ups from a selected channel. Thus, I am putting a partial > at the top of the views, with a select box to choose the channels: > > <div id="uplognavlist"> > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > =>"newchannel", :controller =>"ups"} do |f| %> > <%= f.label :channel_id %> > <%= select("channel", "channel_id", Channel.find(:all, :order => > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > [ p.channel, p.id ]}, {:include_blank => true}) %> > <%= f.submit "Change" , :class=>''button'' %> > <% end %> > <%= links_for_uplog %> > </div> > > My question is, within my UpsController.newchannel(), how do I access > the calue of the channel_id that has been selected in the form > submission? > > Incidentally, if you look at the erb code I put above, there is a line > feed that gets inserted after the submit button, before the next > section " links_for_uplog " within the div. How can I not have that? > > Thanks, Janna
Sorry, to answer the original question:> > My question is, within my UpsController.newchannel(), how do I access > > the calue of the channel_id that has been selected in the form > > submission?When rails posts a form to an action, all of the info from the form will be included in a hash called params. In this case the hash would contain: :ups => {:channel_id => value } so to access it you''d use params[:ups][:channel_id]
Gavin, Thank you. But suppose I didn''t use a named scope -- in that case, how then could I refer to it in my controller? (though I will follow your advice and use the named scope, I need to know the other way also). Also, between: <%= f.submit "Change" , :class=>''button'' %> <% end %> <%= links_for_uplog %> it seems a line feed occurs......the <%= links_for_uplog %> is not immediately to the right as I would like it to be (in <%links_for_uplog %>, the rendered html appears as (copying from firebug): <div id="uplognavlist"> <form name="channelsform" method="post" action="/ups/newchannel"> <div style="margin: 0pt; padding: 0pt;"> <input type="hidden" value="Ty9TBUArgAPxtLuvGL48Sg1uYbzlZWmSJL2dsWuL +YQ=" name="authenticity_token"/> </div> <label for="ups_channel_id">Channel</label> <select id="channel_channel_id" onchange="document.channelsform.submit ();" name="channel[channel_id]"> <option value=""/> <option value="1">ggriptest</option> </select> </form> <a title="Non-Automatic Change Log" style="float: right;" href="/ audits/list?update=UpLogBody">Audit</a> <a title="Add or Remove Associates" style="float: right;" href="/ups/ hotwire?update=UpLogBody">Hotwire</a> <a title="Show Uplog" style="float: right;" href="/ups/uplog? update=UpLogBody">Uplog</a> </div> It appears that after either </select> or </form> there is some kind of a line feed in the display. Can you please answer Me those two questions Gavin? Thank You, Janna On Jun 24, 12:47 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote:> Hi Janna, > > First, you shouldn''t be calling Channel.find(:all, :order => ''channel > ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} > > I''d add a named scope to the Channel model like so: > > named_scope :not_deleted, :conditions => {:deleted => > false }, :order => ''channel ASC'' > > And then in the controller: > @channels = Channel.not_deleted > > Then in your view: > <%= f.select :channel_id, @channels %> > > The standard here would be to create the new Ups in a method called > create. By using form_for on a new record rails will automatically > know to post to an action called create so, unless you have a good > reason not to, I''d recommend calling your controller method "create" > and letting Rails behave the way it wants to. > > which ''line feed'' do you want to remove? > > Gavin > > http://handyrailstips.com > > On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > I have a model ("Ups") and a corresponding controller > > ("UpsController"). The Ups model has a link to my "channels" toble > > through channel_id > > > Everything I am going to do in the given views for Ups have to do with > > using those ups from a selected channel. Thus, I am putting a partial > > at the top of the views, with a select box to choose the channels: > > > <div id="uplognavlist"> > > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > > =>"newchannel", :controller =>"ups"} do |f| %> > > <%= f.label :channel_id %> > > <%= select("channel", "channel_id", Channel.find(:all, :order => > > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > > [ p.channel, p.id ]}, {:include_blank => true}) %> > > <%= f.submit "Change" , :class=>''button'' %> > > <% end %> > > <%= links_for_uplog %> > > </div> > > > My question is, within my UpsController.newchannel(), how do I access > > the calue of the channel_id that has been selected in the form > > submission? > > > Incidentally, if you look at the erb code I put above, there is a line > > feed that gets inserted after the submit button, before the next > > section " links_for_uplog " within the div. How can I not have that? > > > Thanks, Janna
Try using <%- end -%> instead of <% end %> at the of the form. That should remove the line feeds and white space. A lot of rails coders wouldn''t use the named scope here. I always try to keep as much of this sort of logic in the model but you could also simply use ''find'' in the controller: @channels = Channel.all( :conditions => { :deleted => false }, :order => ''channel ASC'' ).collect { |p| p.name, p.id } also check out collection_select: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M001910 I think this might be more appropriate for you in this instance: <%= f.collection_select :channel_id, @channels, :id, :prompt => true %> Hope that helps? Gavin http://handyrailstips.com On Jun 24, 5:58 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:> Gavin, > > Thank you. But suppose I didn''t use a named scope -- in that case, how > then could I refer to it in my controller? (though I will follow your > advice and use the named scope, I need to know the other way also). > > Also, between: > > <%= f.submit "Change" , :class=>''button'' %> > <% end %> > <%= links_for_uplog %> > > it seems a line feed occurs......the <%= links_for_uplog %> is not > immediately to the right as I would like it to be (in <%> links_for_uplog %>, > > the rendered html appears as (copying from firebug): > <div id="uplognavlist"> > <form name="channelsform" method="post" action="/ups/newchannel"> > <div style="margin: 0pt; padding: 0pt;"> > <input type="hidden" value="Ty9TBUArgAPxtLuvGL48Sg1uYbzlZWmSJL2dsWuL > +YQ=" name="authenticity_token"/> > </div> > <label for="ups_channel_id">Channel</label> > <select id="channel_channel_id" onchange="document.channelsform.submit > ();" name="channel[channel_id]"> > <option value=""/> > <option value="1">ggriptest</option> > </select> > </form> > <a title="Non-Automatic Change Log" style="float: right;" href="/ > audits/list?update=UpLogBody">Audit</a> > <a title="Add or Remove Associates" style="float: right;" href="/ups/ > hotwire?update=UpLogBody">Hotwire</a> > <a title="Show Uplog" style="float: right;" href="/ups/uplog? > update=UpLogBody">Uplog</a> > </div> > > It appears that after either </select> or </form> there is some kind > of a line feed in the display. > > Can you please answer Me those two questions Gavin? Thank You, Janna > > On Jun 24, 12:47 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > Hi Janna, > > > First, you shouldn''t be calling Channel.find(:all, :order => ''channel > > ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} > > > I''d add a named scope to the Channel model like so: > > > named_scope :not_deleted, :conditions => {:deleted => > > false }, :order => ''channel ASC'' > > > And then in the controller: > > @channels = Channel.not_deleted > > > Then in your view: > > <%= f.select :channel_id, @channels %> > > > The standard here would be to create the new Ups in a method called > > create. By using form_for on a new record rails will automatically > > know to post to an action called create so, unless you have a good > > reason not to, I''d recommend calling your controller method "create" > > and letting Rails behave the way it wants to. > > > which ''line feed'' do you want to remove? > > > Gavin > > >http://handyrailstips.com > > > On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > I have a model ("Ups") and a corresponding controller > > > ("UpsController"). The Ups model has a link to my "channels" toble > > > through channel_id > > > > Everything I am going to do in the given views for Ups have to do with > > > using those ups from a selected channel. Thus, I am putting a partial > > > at the top of the views, with a select box to choose the channels: > > > > <div id="uplognavlist"> > > > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > > > =>"newchannel", :controller =>"ups"} do |f| %> > > > <%= f.label :channel_id %> > > > <%= select("channel", "channel_id", Channel.find(:all, :order => > > > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > > > [ p.channel, p.id ]}, {:include_blank => true}) %> > > > <%= f.submit "Change" , :class=>''button'' %> > > > <% end %> > > > <%= links_for_uplog %> > > > </div> > > > > My question is, within my UpsController.newchannel(), how do I access > > > the calue of the channel_id that has been selected in the form > > > submission? > > > > Incidentally, if you look at the erb code I put above, there is a line > > > feed that gets inserted after the submit button, before the next > > > section " links_for_uplog " within the div. How can I not have that? > > > > Thanks, Janna
damn - sorry that should be: <%= f.collection_select :channel_id, @channels, :id, :channel, :prompt => true %> missed out the text_method param Gavin http://handyrailsitps.com On Jun 24, 6:40 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote:> Try using <%- end -%> instead of <% end %> at the of the form. That > should remove the line feeds and white space. > > A lot of rails coders wouldn''t use the named scope here. > I always try to keep as much of this sort of logic in the model but > you could also simply use ''find'' in the controller: > > @channels = Channel.all( :conditions => { :deleted => false }, :order > => ''channel ASC'' ).collect { |p| p.name, p.id } > > also check out collection_select:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelp... > > I think this might be more appropriate for you in this instance: > > <%= f.collection_select :channel_id, @channels, :id, :prompt => true > %> > > Hope that helps? > > Gavin > > http://handyrailstips.com > > On Jun 24, 5:58 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > Gavin, > > > Thank you. But suppose I didn''t use a named scope -- in that case, how > > then could I refer to it in my controller? (though I will follow your > > advice and use the named scope, I need to know the other way also). > > > Also, between: > > > <%= f.submit "Change" , :class=>''button'' %> > > <% end %> > > <%= links_for_uplog %> > > > it seems a line feed occurs......the <%= links_for_uplog %> is not > > immediately to the right as I would like it to be (in <%> > links_for_uplog %>, > > > the rendered html appears as (copying from firebug): > > <div id="uplognavlist"> > > <form name="channelsform" method="post" action="/ups/newchannel"> > > <div style="margin: 0pt; padding: 0pt;"> > > <input type="hidden" value="Ty9TBUArgAPxtLuvGL48Sg1uYbzlZWmSJL2dsWuL > > +YQ=" name="authenticity_token"/> > > </div> > > <label for="ups_channel_id">Channel</label> > > <select id="channel_channel_id" onchange="document.channelsform.submit > > ();" name="channel[channel_id]"> > > <option value=""/> > > <option value="1">ggriptest</option> > > </select> > > </form> > > <a title="Non-Automatic Change Log" style="float: right;" href="/ > > audits/list?update=UpLogBody">Audit</a> > > <a title="Add or Remove Associates" style="float: right;" href="/ups/ > > hotwire?update=UpLogBody">Hotwire</a> > > <a title="Show Uplog" style="float: right;" href="/ups/uplog? > > update=UpLogBody">Uplog</a> > > </div> > > > It appears that after either </select> or </form> there is some kind > > of a line feed in the display. > > > Can you please answer Me those two questions Gavin? Thank You, Janna > > > On Jun 24, 12:47 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > Hi Janna, > > > > First, you shouldn''t be calling Channel.find(:all, :order => ''channel > > > ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} > > > > I''d add a named scope to the Channel model like so: > > > > named_scope :not_deleted, :conditions => {:deleted => > > > false }, :order => ''channel ASC'' > > > > And then in the controller: > > > @channels = Channel.not_deleted > > > > Then in your view: > > > <%= f.select :channel_id, @channels %> > > > > The standard here would be to create the new Ups in a method called > > > create. By using form_for on a new record rails will automatically > > > know to post to an action called create so, unless you have a good > > > reason not to, I''d recommend calling your controller method "create" > > > and letting Rails behave the way it wants to. > > > > which ''line feed'' do you want to remove? > > > > Gavin > > > >http://handyrailstips.com > > > > On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > > I have a model ("Ups") and a corresponding controller > > > > ("UpsController"). The Ups model has a link to my "channels" toble > > > > through channel_id > > > > > Everything I am going to do in the given views for Ups have to do with > > > > using those ups from a selected channel. Thus, I am putting a partial > > > > at the top of the views, with a select box to choose the channels: > > > > > <div id="uplognavlist"> > > > > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > > > > =>"newchannel", :controller =>"ups"} do |f| %> > > > > <%= f.label :channel_id %> > > > > <%= select("channel", "channel_id", Channel.find(:all, :order => > > > > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > > > > [ p.channel, p.id ]}, {:include_blank => true}) %> > > > > <%= f.submit "Change" , :class=>''button'' %> > > > > <% end %> > > > > <%= links_for_uplog %> > > > > </div> > > > > > My question is, within my UpsController.newchannel(), how do I access > > > > the calue of the channel_id that has been selected in the form > > > > submission? > > > > > Incidentally, if you look at the erb code I put above, there is a line > > > > feed that gets inserted after the submit button, before the next > > > > section " links_for_uplog " within the div. How can I not have that? > > > > > Thanks, Janna
Gavin, Sorry to beat the dead horse, but I still need to know how to access the channel_id given the way I initially posted the code. Can you show me that? -Janna On Jun 24, 1:42 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote:> damn - sorry that should be: > <%= f.collection_select :channel_id, @channels, :id, :channel, :prompt > => true %> > > missed out the text_method param > > Gavin > > http://handyrailsitps.com > > On Jun 24, 6:40 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > Try using <%- end -%> instead of <% end %> at the of the form. That > > should remove the line feeds and white space. > > > A lot of rails coders wouldn''t use the named scope here. > > I always try to keep as much of this sort of logic in the model but > > you could also simply use ''find'' in the controller: > > > @channels = Channel.all( :conditions => { :deleted => false }, :order > > => ''channel ASC'' ).collect { |p| p.name, p.id } > > > also check out collection_select:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelp... > > > I think this might be more appropriate for you in this instance: > > > <%= f.collection_select :channel_id, @channels, :id, :prompt => true > > %> > > > Hope that helps? > > > Gavin > > >http://handyrailstips.com > > > On Jun 24, 5:58 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > Gavin, > > > > Thank you. But suppose I didn''t use a named scope -- in that case, how > > > then could I refer to it in my controller? (though I will follow your > > > advice and use the named scope, I need to know the other way also). > > > > Also, between: > > > > <%= f.submit "Change" , :class=>''button'' %> > > > <% end %> > > > <%= links_for_uplog %> > > > > it seems a line feed occurs......the <%= links_for_uplog %> is not > > > immediately to the right as I would like it to be (in <%> > > links_for_uplog %>, > > > > the rendered html appears as (copying from firebug): > > > <div id="uplognavlist"> > > > <form name="channelsform" method="post" action="/ups/newchannel"> > > > <div style="margin: 0pt; padding: 0pt;"> > > > <input type="hidden" value="Ty9TBUArgAPxtLuvGL48Sg1uYbzlZWmSJL2dsWuL > > > +YQ=" name="authenticity_token"/> > > > </div> > > > <label for="ups_channel_id">Channel</label> > > > <select id="channel_channel_id" onchange="document.channelsform.submit > > > ();" name="channel[channel_id]"> > > > <option value=""/> > > > <option value="1">ggriptest</option> > > > </select> > > > </form> > > > <a title="Non-Automatic Change Log" style="float: right;" href="/ > > > audits/list?update=UpLogBody">Audit</a> > > > <a title="Add or Remove Associates" style="float: right;" href="/ups/ > > > hotwire?update=UpLogBody">Hotwire</a> > > > <a title="Show Uplog" style="float: right;" href="/ups/uplog? > > > update=UpLogBody">Uplog</a> > > > </div> > > > > It appears that after either </select> or </form> there is some kind > > > of a line feed in the display. > > > > Can you please answer Me those two questions Gavin? Thank You, Janna > > > > On Jun 24, 12:47 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > > Hi Janna, > > > > > First, you shouldn''t be calling Channel.find(:all, :order => ''channel > > > > ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} > > > > > I''d add a named scope to the Channel model like so: > > > > > named_scope :not_deleted, :conditions => {:deleted => > > > > false }, :order => ''channel ASC'' > > > > > And then in the controller: > > > > @channels = Channel.not_deleted > > > > > Then in your view: > > > > <%= f.select :channel_id, @channels %> > > > > > The standard here would be to create the new Ups in a method called > > > > create. By using form_for on a new record rails will automatically > > > > know to post to an action called create so, unless you have a good > > > > reason not to, I''d recommend calling your controller method "create" > > > > and letting Rails behave the way it wants to. > > > > > which ''line feed'' do you want to remove? > > > > > Gavin > > > > >http://handyrailstips.com > > > > > On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > > > I have a model ("Ups") and a corresponding controller > > > > > ("UpsController"). The Ups model has a link to my "channels" toble > > > > > through channel_id > > > > > > Everything I am going to do in the given views for Ups have to do with > > > > > using those ups from a selected channel. Thus, I am putting a partial > > > > > at the top of the views, with a select box to choose the channels: > > > > > > <div id="uplognavlist"> > > > > > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > > > > > =>"newchannel", :controller =>"ups"} do |f| %> > > > > > <%= f.label :channel_id %> > > > > > <%= select("channel", "channel_id", Channel.find(:all, :order => > > > > > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > > > > > [ p.channel, p.id ]}, {:include_blank => true}) %> > > > > > <%= f.submit "Change" , :class=>''button'' %> > > > > > <% end %> > > > > > <%= links_for_uplog %> > > > > > </div> > > > > > > My question is, within my UpsController.newchannel(), how do I access > > > > > the calue of the channel_id that has been selected in the form > > > > > submission? > > > > > > Incidentally, if you look at the erb code I put above, there is a line > > > > > feed that gets inserted after the submit button, before the next > > > > > section " links_for_uplog " within the div. How can I not have that? > > > > > > Thanks, Janna
Okay - I''m assuming the action your form posts to is newchannel and you want to access the input from the form in that method? In which case: @channel_id_you_want = params[:ups][:channel_id] That should work? Gavin http://handyrailstips.com On Jun 24, 6:59 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:> Gavin, > > Sorry to beat the dead horse, but I still need to know how to access > the channel_id given the way I initially posted the code. Can you show > me that? -Janna > > On Jun 24, 1:42 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > damn - sorry that should be: > > <%= f.collection_select :channel_id, @channels, :id, :channel, :prompt > > => true %> > > > missed out the text_method param > > > Gavin > > >http://handyrailsitps.com > > > On Jun 24, 6:40 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > Try using <%- end -%> instead of <% end %> at the of the form. That > > > should remove the line feeds and white space. > > > > A lot of rails coders wouldn''t use the named scope here. > > > I always try to keep as much of this sort of logic in the model but > > > you could also simply use ''find'' in the controller: > > > > @channels = Channel.all( :conditions => { :deleted => false }, :order > > > => ''channel ASC'' ).collect { |p| p.name, p.id } > > > > also check out collection_select:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelp... > > > > I think this might be more appropriate for you in this instance: > > > > <%= f.collection_select :channel_id, @channels, :id, :prompt => true > > > %> > > > > Hope that helps? > > > > Gavin > > > >http://handyrailstips.com > > > > On Jun 24, 5:58 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > > Gavin, > > > > > Thank you. But suppose I didn''t use a named scope -- in that case, how > > > > then could I refer to it in my controller? (though I will follow your > > > > advice and use the named scope, I need to know the other way also). > > > > > Also, between: > > > > > <%= f.submit "Change" , :class=>''button'' %> > > > > <% end %> > > > > <%= links_for_uplog %> > > > > > it seems a line feed occurs......the <%= links_for_uplog %> is not > > > > immediately to the right as I would like it to be (in <%> > > > links_for_uplog %>, > > > > > the rendered html appears as (copying from firebug): > > > > <div id="uplognavlist"> > > > > <form name="channelsform" method="post" action="/ups/newchannel"> > > > > <div style="margin: 0pt; padding: 0pt;"> > > > > <input type="hidden" value="Ty9TBUArgAPxtLuvGL48Sg1uYbzlZWmSJL2dsWuL > > > > +YQ=" name="authenticity_token"/> > > > > </div> > > > > <label for="ups_channel_id">Channel</label> > > > > <select id="channel_channel_id" onchange="document.channelsform.submit > > > > ();" name="channel[channel_id]"> > > > > <option value=""/> > > > > <option value="1">ggriptest</option> > > > > </select> > > > > </form> > > > > <a title="Non-Automatic Change Log" style="float: right;" href="/ > > > > audits/list?update=UpLogBody">Audit</a> > > > > <a title="Add or Remove Associates" style="float: right;" href="/ups/ > > > > hotwire?update=UpLogBody">Hotwire</a> > > > > <a title="Show Uplog" style="float: right;" href="/ups/uplog? > > > > update=UpLogBody">Uplog</a> > > > > </div> > > > > > It appears that after either </select> or </form> there is some kind > > > > of a line feed in the display. > > > > > Can you please answer Me those two questions Gavin? Thank You, Janna > > > > > On Jun 24, 12:47 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > > > Hi Janna, > > > > > > First, you shouldn''t be calling Channel.find(:all, :order => ''channel > > > > > ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} > > > > > > I''d add a named scope to the Channel model like so: > > > > > > named_scope :not_deleted, :conditions => {:deleted => > > > > > false }, :order => ''channel ASC'' > > > > > > And then in the controller: > > > > > @channels = Channel.not_deleted > > > > > > Then in your view: > > > > > <%= f.select :channel_id, @channels %> > > > > > > The standard here would be to create the new Ups in a method called > > > > > create. By using form_for on a new record rails will automatically > > > > > know to post to an action called create so, unless you have a good > > > > > reason not to, I''d recommend calling your controller method "create" > > > > > and letting Rails behave the way it wants to. > > > > > > which ''line feed'' do you want to remove? > > > > > > Gavin > > > > > >http://handyrailstips.com > > > > > > On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > > > > I have a model ("Ups") and a corresponding controller > > > > > > ("UpsController"). The Ups model has a link to my "channels" toble > > > > > > through channel_id > > > > > > > Everything I am going to do in the given views for Ups have to do with > > > > > > using those ups from a selected channel. Thus, I am putting a partial > > > > > > at the top of the views, with a select box to choose the channels: > > > > > > > <div id="uplognavlist"> > > > > > > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > > > > > > =>"newchannel", :controller =>"ups"} do |f| %> > > > > > > <%= f.label :channel_id %> > > > > > > <%= select("channel", "channel_id", Channel.find(:all, :order => > > > > > > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > > > > > > [ p.channel, p.id ]}, {:include_blank => true}) %> > > > > > > <%= f.submit "Change" , :class=>''button'' %> > > > > > > <% end %> > > > > > > <%= links_for_uplog %> > > > > > > </div> > > > > > > > My question is, within my UpsController.newchannel(), how do I access > > > > > > the calue of the channel_id that has been selected in the form > > > > > > submission? > > > > > > > Incidentally, if you look at the erb code I put above, there is a line > > > > > > feed that gets inserted after the submit button, before the next > > > > > > section " links_for_uplog " within the div. How can I not have that? > > > > > > > Thanks, Janna
Ahh, right...that''s it. God, I just couldn''t get that -- ok, off to do it the right way that you showed me! -Janna. On Jun 24, 2:04 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote:> Okay - I''m assuming the action your form posts to is newchannel and > you want to access the input from the form in that method? > In which case: > > @channel_id_you_want = params[:ups][:channel_id] > > That should work? > > Gavin > > http://handyrailstips.com > > On Jun 24, 6:59 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > Gavin, > > > Sorry to beat the dead horse, but I still need to know how to access > > the channel_id given the way I initially posted the code. Can you show > > me that? -Janna > > > On Jun 24, 1:42 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > damn - sorry that should be: > > > <%= f.collection_select :channel_id, @channels, :id, :channel, :prompt > > > => true %> > > > > missed out the text_method param > > > > Gavin > > > >http://handyrailsitps.com > > > > On Jun 24, 6:40 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > > Try using <%- end -%> instead of <% end %> at the of the form. That > > > > should remove the line feeds and white space. > > > > > A lot of rails coders wouldn''t use the named scope here. > > > > I always try to keep as much of this sort of logic in the model but > > > > you could also simply use ''find'' in the controller: > > > > > @channels = Channel.all( :conditions => { :deleted => false }, :order > > > > => ''channel ASC'' ).collect { |p| p.name, p.id } > > > > > also check out collection_select:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelp... > > > > > I think this might be more appropriate for you in this instance: > > > > > <%= f.collection_select :channel_id, @channels, :id, :prompt => true > > > > %> > > > > > Hope that helps? > > > > > Gavin > > > > >http://handyrailstips.com > > > > > On Jun 24, 5:58 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > > > Gavin, > > > > > > Thank you. But suppose I didn''t use a named scope -- in that case, how > > > > > then could I refer to it in my controller? (though I will follow your > > > > > advice and use the named scope, I need to know the other way also). > > > > > > Also, between: > > > > > > <%= f.submit "Change" , :class=>''button'' %> > > > > > <% end %> > > > > > <%= links_for_uplog %> > > > > > > it seems a line feed occurs......the <%= links_for_uplog %> is not > > > > > immediately to the right as I would like it to be (in <%> > > > > links_for_uplog %>, > > > > > > the rendered html appears as (copying from firebug): > > > > > <div id="uplognavlist"> > > > > > <form name="channelsform" method="post" action="/ups/newchannel"> > > > > > <div style="margin: 0pt; padding: 0pt;"> > > > > > <input type="hidden" value="Ty9TBUArgAPxtLuvGL48Sg1uYbzlZWmSJL2dsWuL > > > > > +YQ=" name="authenticity_token"/> > > > > > </div> > > > > > <label for="ups_channel_id">Channel</label> > > > > > <select id="channel_channel_id" onchange="document.channelsform.submit > > > > > ();" name="channel[channel_id]"> > > > > > <option value=""/> > > > > > <option value="1">ggriptest</option> > > > > > </select> > > > > > </form> > > > > > <a title="Non-Automatic Change Log" style="float: right;" href="/ > > > > > audits/list?update=UpLogBody">Audit</a> > > > > > <a title="Add or Remove Associates" style="float: right;" href="/ups/ > > > > > hotwire?update=UpLogBody">Hotwire</a> > > > > > <a title="Show Uplog" style="float: right;" href="/ups/uplog? > > > > > update=UpLogBody">Uplog</a> > > > > > </div> > > > > > > It appears that after either </select> or </form> there is some kind > > > > > of a line feed in the display. > > > > > > Can you please answer Me those two questions Gavin? Thank You, Janna > > > > > > On Jun 24, 12:47 pm, Gavin <ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org> wrote: > > > > > > > Hi Janna, > > > > > > > First, you shouldn''t be calling Channel.find(:all, :order => ''channel > > > > > > ASC'', :conditions => [''deleted=0'']).collect {|p| [ p.channel, p.id ]} > > > > > > > I''d add a named scope to the Channel model like so: > > > > > > > named_scope :not_deleted, :conditions => {:deleted => > > > > > > false }, :order => ''channel ASC'' > > > > > > > And then in the controller: > > > > > > @channels = Channel.not_deleted > > > > > > > Then in your view: > > > > > > <%= f.select :channel_id, @channels %> > > > > > > > The standard here would be to create the new Ups in a method called > > > > > > create. By using form_for on a new record rails will automatically > > > > > > know to post to an action called create so, unless you have a good > > > > > > reason not to, I''d recommend calling your controller method "create" > > > > > > and letting Rails behave the way it wants to. > > > > > > > which ''line feed'' do you want to remove? > > > > > > > Gavin > > > > > > >http://handyrailstips.com > > > > > > > On Jun 24, 4:46 pm, JannaB <mistressja...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote: > > > > > > > > I have a model ("Ups") and a corresponding controller > > > > > > > ("UpsController"). The Ups model has a link to my "channels" toble > > > > > > > through channel_id > > > > > > > > Everything I am going to do in the given views for Ups have to do with > > > > > > > using those ups from a selected channel. Thus, I am putting a partial > > > > > > > at the top of the views, with a select box to choose the channels: > > > > > > > > <div id="uplognavlist"> > > > > > > > <% form_for :ups, :html => {:name => ''channelsform''},:url=>{ :action > > > > > > > =>"newchannel", :controller =>"ups"} do |f| %> > > > > > > > <%= f.label :channel_id %> > > > > > > > <%= select("channel", "channel_id", Channel.find(:all, :order => > > > > > > > ''channel ASC'', :conditions => [''deleted=0'']).collect {|p| > > > > > > > [ p.channel, p.id ]}, {:include_blank => true}) %> > > > > > > > <%= f.submit "Change" , :class=>''button'' %> > > > > > > > <% end %> > > > > > > > <%= links_for_uplog %> > > > > > > > </div> > > > > > > > > My question is, within my UpsController.newchannel(), how do I access > > > > > > > the calue of the channel_id that has been selected in the form > > > > > > > submission? > > > > > > > > Incidentally, if you look at the erb code I put above, there is a line > > > > > > > feed that gets inserted after the submit button, before the next > > > > > > > section " links_for_uplog " within the div. How can I not have that? > > > > > > > > Thanks, Janna