routes - Render a 'micropost feed' from the Rails Tutorial in a custom location/view? -


i followed michael hartl's 'rails tutorial' book , need render 'micropost feed' @ custom location (/members) instead of @ site's root.

i've updated sessionscontroller when user logs in redirected new /members url, there 2 statements needed on member view cause errors , prevent page loading micropost feed.

# app/views/members/index.html.erb <%= render 'shared/micropost_form' %> <%= render 'shared/feed' %> 

the first error is:

argumenterror in memberscontroller#index first argument in form cannot contain nil or empty 

returning raise argumenterror, "first argument in form cannot contain nil or empty" unless object , second error (seen when removing first render statement) returns undefined method 'any?' nil:nilclass

part of issue because render 'micropost feed' @ /members app/views/members/index.html.erb seems need access app/controllers/microposts_controller.rb , i'm unsure how handle this.

update:

micropost_controller.rb

# controllers/micropost_controller.rb  class micropostscontroller < applicationcontroller   before_action :logged_in_user, only: [:create, :destroy]   before_action :correct_user,   only: :destroy    def create     @micropost = current_user.microposts.build(micropost_params)     if @micropost.save       flash[:success] = "micropost created!"       redirect_to '/members'     else       @feed_items = []       render '/members'     end   end    def destroy     @micropost.destroy     flash[:success] = "micropost deleted"     redirect_to request.referrer || '/members'   end    private      def micropost_params       params.require(:micropost).permit(:content, :picture)     end      def correct_user       @micropost = current_user.microposts.find_by(id: params[:id])       redirect_to '/members' if @micropost.nil?     end end 

_micropost_form.html.erb

# shared/_micropost_form.html.erb  <%= form_for(@micropost, html: { multipart: true }) |f| %>   <%= render 'shared/error_messages', object: f.object %>   <div class="field">     <%= f.text_area :content, placeholder: "compose new micropost (420 chars max)..." %>   </div>   <%= f.submit "post", class: "btn btn-primary" %>   <span class="picture">     <%= f.file_field :picture, accept: 'image/jpeg,image/gif,image/png' %>   </span> <% end %>  <script type="text/javascript">   $('#micropost_picture').bind('change', function() {     size_in_megabytes = this.files[0].size/1024/1024;     if (size_in_megabytes > 5) {       alert('maximum file size 5mb. please choose smaller file.');     }   }); </script> 

_feed.html.erb

# shared/_feed.html.erb  <% if @feed_items.any? %>   <ol class="microposts">     <%= render @feed_items %>   </ol>   <%= will_paginate @feed_items %> <% end %> 

memberscontroller (as updated @mandeep's suggestion below)

class memberscontroller < applicationcontroller   def index     @micropost = current_user.microposts.build     @feed_items = current_user.microposts   end end 

you not passing arguments in partials. need following:

<%= render 'shared/micropost_form', :locals => { :micropost => @micropost }  %> <%= render 'shared/feed', :locals => { :feed_items => @feed_items }  %> 

remember, need have these 2 variables inside index method: @micropost , @feed_items.


Comments

Popular posts from this blog

How to connect android app to App engine -

gcc - MinGW's ld cannot perform PE operations on non PE output file -

php - display validation error message next to the textbox in codeigniter -