Prywatne wiadomości w aplikacji

Witam,
Staram się użyć gemu:

simple-private-messages

Instalacje przebiegła pomyślnie generowanie scaffoldu też

controller new wygląda tak:

  def new
    @message = Message.new

    if params[:reply_to]
      @reply_to = @user.received_messages.find(params[:reply_to])
      unless @reply_to.nil?
        @message.to = @reply_to.sender.login
        @message.subject = "Re: #{@reply_to.subject}"
        @message.body = "\n\n*Original message*\n\n #{@reply_to.body}"
      end
    end
  end

routes.rb

  resources :users do
             resources :messages do
               collection do
                 post :delete_selected
               end
             end
           end

message.rb

class Message < ActiveRecord::Base

  is_private_message
  
  # The :to accessor is used by the scaffolding,
  # uncomment it if using it or you can remove it if not
  attr_accessor :to
  
end

i gdy wchodze pod adres : http://localhost:3000/users/2/messages/new

to nie otrzymuje żadnego erroru a formularza z new nie widze … -.-
pusta strona

widok :

<% form_for @message, :url => user_messages_path(@user) do |f| %>
  <p>
    To:<br />
		<%= f.text_field :to %>

  </p>
  <p>
    Subject:<br />
    <%= f.text_field :subject %>

    </p>
    <p>
      Message<br />
      <%= f.text_area :body %>

    </p>
    <p>
      <%= submit_tag "Send" %>
    </p>
<% end %>

Zamiast

<% form_for @message, :url => user_messages_path(@user) do |f| %>

użyj:

<%= form_for @message, :url => user_messages_path(@user) do |f| %>

Różnica jest w tym “<%=”. W Rails 3/4 przy wywoływaniu metod typu form_for, form_tag, czy content_tag, nawet jeśli przekazujesz do nich blok, należy postawić to “=”.

  • dla Ciebie nie zauważyłem tego :slight_smile:

Mam jeszcze pytanie jak wejde w formularz to
text field “to” jest pusty jak zrobić żeby pod adresem
http://localhost:3000/users/2/messages/new

automatycznie wypełnij to pole tym id co jest w adresie ?

mozesz zczytac z params, albo zainicjowac w kontrolerze np. czyli

input ‘name’=“to”, value="#{current_user.id lub z params[:user_id]}"

albo w kontrolerze w new
@costam = Message.new
@costam.to = current_user.id

no i wszytskie podobne sposoby

okk dzięki wielkie podziałalo
Pozdrawiam :wink: