Forum: Rails-ES Acerca de formularios y datos.

Posted by Jorge Fernandez (dwdw)
on 2010-01-17 22:02
Buenas, estoy tratando de hacer que un usuario pueda editar sus propios
posts. Para ello he creado una relación "usuario_id" en la tabla de
Posts.

Todo me funciona bien excepto que no sé como hacer para que al crear un
post, el usuario_id se autogenere. Me explico:

Si yo creo un post, relleno el nombre, el titulo, el contenido, y al
final tengo que seleccionar yo manualmente usuario_id, cuando lo que
quiero es que ese dato se genere solo, según el usuario que sea el
conectado.

Os pego algunos datos:

posts_controller.rb

  def create
    @post = Post.new(params[:post])

    respond_to do |format|
      if @post.save
        flash[:notice] = 'Post creado.'
        format.html { redirect_to(@post) }
        format.xml  { render :xml => @post, :status => :created,
:location => @post }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @post.errors, :status =>
:unprocessable_entity }
      end
      end
  end

app/views/post/index.html.erb

     <% if  post.usuario_id == session[:usuario_id] %>
      <td><%= link_to 'Edit', {:action => 'edit', :id => post.id}
%></td>
      <td><%= link_to 'Destroy', post, :confirm => 'Are you sure?',
:method => :delete %></td>
    <% end %>

app/views/post/new.html.erb

<h1>New post</h1>

<% form_for(@post) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :nombre %><br />
    <%= f.collection_select :nombre, Usuario.all, :nombre, :nombre %>
  </p>
  <p>
    <%= f.label :titulo %><br />
    <%= f.text_field :titulo %>
  </p>
  <p>
    <%= f.label :contenido %><br />
    <%= f.text_area :contenido %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', posts_path %>

Como veis, esta ayuda también me serviría para el valor "nombre", para
que el autor del post sea el usuario logeado.
Posted by Juan Ripoll (juarinu)
on 2010-01-22 15:30
Jorge Fernandez wrote:
> Buenas, estoy tratando de hacer que un usuario pueda editar sus propios
> posts. Para ello he creado una relación "usuario_id" en la tabla de
> Posts.
> 
> Todo me funciona bien excepto que no sé como hacer para que al crear un
> post, el usuario_id se autogenere. Me explico:
> 
> ...

En el create del controlador puedes hacer:

@post = Post.new(params[:post])
@post.usuario_id = session[:usuario_id]

suponiendo que el dato que guardas en la sesión sea el id del usuario 
logeado.


Un Saludo.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.